表と数式 (給与の源泉徴収)

かつては、理工学でも、対数や三角関数等の初等関数とか、 ベッセル関数や楕円関数といった、たくさんの特殊関数の数値を集めた、 「数表」が手放せない時代がありました。 そして、はるか昔、日常よく使う関数のほとんどが、 Hewlett-Packard 社の HP-35 に始まる「関数電卓」によって駆逐され、 今は、その残りも含めて、コンピュータのプログラミングに吸収されています。 理工学は、非能率を嫌うためです。 クリエイティヴに生きたいというのが、 理工学の原点です。

一方、「非能率こそ官僚が生きる基盤」という、 文系事務の官庁手続きは別世界で、 お役所の世界になると、 これだけコンピュータが普及した今でも、 数式とアルゴリズムとは無縁な、 「表」を使った計算こそが日常で、 理工学の能率と合理性は排除されます。

例えば、給与所得の源泉徴収作業を見てみましょう。 地球環境を考えれば、 毎月の源泉徴収というインチキ(源泉徴収義務者に報酬を払わないし、 先取りした税金の利子も払わない)を別にしても、 「源泉所得税」を「表」ベースから 「数式」ベースに変えておくのが当然で、 たった、それだけの改善で、分厚い表を延々と引く単純繰り返し作業は消滅して、 下記の利点が生まれます。

  1. 圧倒的な高能率
  2. 明解な根拠
  3. 恣意的な「表の刻み」に起因する運・不運や不公平さの解消

最近は、さすがに気が惹けたのか、「所得税法 第 819 条」に、

  「.. その給与等の支払額に関する計算を事務機械によって処理しているときは、
  これらの規定に規定する別表第二の甲欄に掲げる税額は、当該税額が算定された
  方法に準ずるものとして大蔵大臣が定める方法によって計算した金額をもって代え
  ることができる。」

というのがあって、あいも変わらず、わけのわからない日本語ですが、 言いたいことは、

  1. 計算は手作業が原則だが、
  2. コンピュータ利用も認めよう。
  3. ただし、それは一部だけ
つまり、「全部コンピュータでやるのはダメ」というわけで、 民間にも「非能率」「反コンピュータ」を強制しようというのが、その趣旨です。 人類最大の発明の1つも、日本をリードする高級官僚は、 いとも簡単にシャットアウト。

この「大蔵大臣が定める方法」というのは、 「経済社会の変化等に対応して早急に講ずべき所得税及び法人税の 負担軽減措置に関する法律 第 11 条」という長い名前の法律でダメ押しした上で、 「経済社会の変化等に対応して早急に講ずべき所得税及び法人税の 負担軽減措置に関する法律施行規則」という短い省令で、 (awk 流の構文で書き直せば)下記のような (表を使った計算とは一致しない!) アルゴリズムを提示しています。

  別表第一

  給与所得控除の額(m,  x) {	# m = その月の社会保険料控除後の給与等の金額
    if (m <= 135416)
	x = 54167
    else if (m <= 149999)
	x = m * 0.40
    else if (m <= 299999)
	x = m * 0.30 + 15000
    else if (m <= 549999)
	x = m * 0.20 + 45000
    else if (m <= 833333)
	x = m * 0.10 + 100000
    else
	x = m * 0.05 + 141667
    reurn int(x + 0.999999)
  }


  別表第二

  基礎控除・配偶者控除・扶養控除額(配偶者数、扶養者数) {
    return 31667 * (1 + 控除対象配偶者数 +扶養者数)
  }

  別表第三

  税額(k,  x) {	# k = その月の課税給与所得金額
    if (k <= 275000)
	x = k * 0.10
    else if (k <= 750000)
	x = k * 0.20 - 27500
    else if (k <= 1500000)
	x = k * 0.30 - 102500
    else if (k <= 2500000)
	x = k * 0.40 - 252500
    else
	x = k * 0.50 - 502500
    return int(x / 10 + 0.5) * 10
  }

  2006-01-01 以降は増税で、下記のように変わります。

  税額(k,  x) {	# k = その月の課税給与所得金額
    if (k <= 275000)
	x = k * 0.09
    else if (k <= 658333)
	x = k * 0.18 - 24750
    else if (k <= 750000)
	x = k * 0.20 - 37917
    else if (k <= 1500000)
	x = k * 0.30 - 112917
    else
	x = k * 0.37 - 217917
    return int(x / 10 + 0.5) * 10
  }

実際の計算は、

  課税所得 = 所得総額 - 非課税の手当 - 社会保険料
		- 給与所得控除 
		- (基礎控除 + (控除対象)配偶者控除 + 扶養控除)
  源泉徴収税額 = 税額(課税所得)
になりますが、「給与所得控除」というのはサラリーマンの必要経費だそうで、 サラリーマンはあまり勉強しない人種と見られています。 基礎控除と配偶者控除、扶養控除は、 本人とその家族の最低生計費と言う意味あいになります。

別表第三とか第一が、

  税額 = 所得 * 税率 - 控除額
の形式(y = a * x - b)になっているのは、 課税所得の全体に同じ税率が適用されるわけではないためで、 先の方針で、数式のセンスが少しでもあれば、 連続性を前提に、もっと明解な表現が作れます。

理系人間から見たら、どう考えても、

  1. 連続な単一の数式による計算を原則とする
  2. それが使えない人のために、表も用意する
のが自然で、何とも馬鹿げた告示ですが、 これをプログラxiミxiミxiミxiミニングすれば良いのであれば、 「子孫のことは知らん」と、 エネルギや資源の無駄に眼をつぶることにしても、 まだ救われます。

しかし、これでは済まないのが現場の仕事で、 例え「日額表」の要らないところでも、すぐに、 「月額表の乙欄はどうする」ということになります。

何のために作ったのかわからない、 前記の法律では、「コンピュータはダメ」というわけですから、 表を真似するしかないわけですが、 いくらなんでも、表をプログラムに組み込んでしまうなんてことをやったら、 馬鹿さ加減丸だしで、コンピュータが可哀想。

で、昔、いろいろ調べているうちに、やっとわかった(注1)のが、


  乙欄の税額 = 独身者が 2.5 倍の金額を受け取ったときの税額
		- 独身者が 1.5 倍の金額を受け取ったときの税額
という、理解しがたいルールを根拠にした表であるということで、 後は、 乙表の刻みかたまるめかた観察 を元に、別記のプログラムが書けます。

事務処理というのは、所詮この程度の仕事で、 最近のパーソナル・コンピュータの速度とメモリなら、 C でプログラムを書く必要がほとんどなくなりました。 SOHO の皆さんは、まず、awk 等のスクリプトで事務をやってみましょう。

それにしても、 乙欄の計算根拠が明文化されている様子もなくて、 とても現代民主国家の法律とは思えませんが、 シュミットさん(昔のドイツの首相)が、 「日本は民主国家になりません」と言い切っていたのを思いだします。

一国のリーダが、 「集団レイプは元気があっていい」(太田誠一総務庁長官)とか、 「天皇中心の ..」「子供を産まない女性を税金で面倒をみるのはおかしい」 (森喜朗前首相)なんて言い出すわけですから、 まともな人間を前提とする民主国家は無理ですね。

注1 - 今は、 http://www.nta.go.jp/category/pamph/gensen/1405/13/01.htmで見られるようです。