2007 年 4 月 1 日以降に取得した資産の定率減価償却

1. 250%定率法のメカニズム

増税目的の、減価償却の残存価額があるのは、 官僚天国の日本だけというわけで、 1大税収源である事業所の海外逃避引留策として、 残存価額をなくすことになりました。(注1)

ただ、定率法の場合は仕組み上、残存価額を 0 にできませんから、 耐用年数に達した時、完全に償却するための細工が必要で、 250%定率法と称する不思議な方法になっています。

この方法のアイデアは、

  1. 償却率を定額法の 2.5 倍とする (例えば、5 年償却なら、(1 / 5) * 2.5)
  2. 償却が進んで、 残存価額に対する定率法償却額が残存価額に対する定額法償却額を下回ったら、 以後、残存価額に対する定額法償却に切替える
という簡単なものですが、 残存価額を完全に 0 にするわけではなくて、 経理分野で伝統的な 1 円(備忘価額)は残すことになっていますから、本来は、 耐用年数経過時に 1 円になるような定率償却のほうが素直です。 このあたりも、文系思考と理系思考の差かなとも思いますが、実際には、 少しでも目先の税収を増やそうという目的で、 こんなメカニズムになったのではないかと思われます。

さて、この250%定率法というのは、 指数的減衰曲線に直線的減衰を繋いで、 耐用年数経過時に残存価額を 0 にしようというもので、 指数曲線の出発点と直線の終点は決まっているわけですから、 この2つの直線をどこで切替えるかが問題です。 数学的に素直なのは、滑らかな変化、すなわち、 微分係数が不連続にならないように、 指数曲線の接線と連結する直線が一致したときで、 これを文系的(官庁的)表現にすると、前記 2 になります。

以下、この方針で連結点(切替点)がどうなるかを考えてみましょう。

まず、資産価額で規格化した残存価額と使用年数の関係を下記のとおりとします。

  y = (1 - r)^x
  ここに、
	y = 残存価額
	r = 償却率 (0 < r <= 1)
	x = 使用年数
この曲線の傾きは、
  dy / dx = (1 - r)^x * log(1 - r)
ですから、曲線上の点 (x0, y0) を通る接線は、下記の連立方程式で決まります。
    y = (1 - r)^x * log(1 - r) * (x - x0) + y0
  {
    y0 = (1 - r)^x0
耐用年数を n とすれば、 x = n で y = 0 にならなければなりませんから、
  x0 = n + 1 / log(1 - r)
です。

x0 の値は耐用年数と償却率に依存しますが、 償却率を小さくすると定額法に近付いて無意味になり、 徴税側に有利、人民に不利になります。 このあたりは両者の力関係で決まるわけですが、 120%定率法の場合は

  r = 1.2 / n
ですから、切替え点は
  x0 = n + 1 / log(1 - 2.5 / n)
x0 の n に対する相対位置は、
  x0 / n = 1 + 1 / log(1 - 2.5 / n) / n
         〜 0.6 (1 << n)  注2
となって、償却期間の前半6割程度までが定率法、 残りが定額法になることがわかります。

結局、償却期間の過半数である 6 割まで定率法にすれば、 「これでは定額法と変わらないではないか」 という批判をかわせるだろうと考えたのではないかと推測できます。

2. プログラミングの問題

以上をまとめると、

  if (経過年数 < n + 1 / log(1 - 2.5 / n))
	償却率 (2.5 /n) で定率償却
  else
	期首帳簿価額を定率償却
と簡単ですが、 新設された「別表第十」というのは、またまた表形式で、 その作成アルゴリズムは undocumented !

官庁主導の資源浪費作戦につき合うしかなくて、 例えば、下記のようなプログラムになります。

なお、実務上は、初年度の償却額は月割、 最終年度の帳簿価額は 1 円にしなければなりません。

#! /bin/sh
/usr/bin/awk '
BEGIN {
  init()
  print "経過年数 償却額 償却額累計"
}
/^#/ {
  next
}
{
  k = split(dtab[$2 - 1], a)
  s = 0
  for (i = 1; i <= $2; i++) {
	d = int(($1 - s) * a[3])
	if (d < int(a[5] * $1))
		break
	s += d;
	print i, d, s
  }
  r = $1 - s
  d = int(($1 - s) * a[4])
  for ( ; i < $2; i++) {
	s += d
	print i, d, s
  }
  print i, $1 - s, $1
}
# 別表第十 (平成 19 年 4 月 1 日以降)
# 耐用年数 定額法の償却率 定率法の償却率 改定償却率 保証率
function init() {
  kd = split("\
  2 0.500 1.000 0 0, \
  3 0.334 0.833 1.000 0.02789, \
  4 0.250 0.625 1.000 0.05274, \
  5 0.200 0.500 1.000 0.06249, \
  6 0.167 0.417 0.500 0.05776, \
  7 0.143 0.357 0.500 0.05496, \
  8 0.125 0.313 0.334 0.05111, \
  9 0.112 0.278 0.334 0.04731, \
 10 0.100 0.250 0.334 0.04448, \
 11 0.091 0.227 0.250 0.04123, \
 12 0.084 0.208 0.250 0.03870, \
 13 0.077 0.192 0.200 0.03633, \
 14 0.072 0.179 0.200 0.03389, \
 15 0.067 0.167 0.200 0.03217, \
 16 0.063 0.156 0.167 0.03063, \
 17 0.059 0.147 0.167 0.02905, \
 18 0.056 0.139 0.143 0.02757, \
 19 0.053 0.132 0.143 0.02616, \
 20 0.050 0.125 0.143 0.02517, \
 21 0.048 0.119 0.125 0.02408, \
 22 0.046 0.114 0.125 0.02296, \
 23 0.044 0.109 0.112 0.02226, \
 24 0.042 0.104 0.112 0.02157, \
 25 0.040 0.100 0.112 0.02058, \
 26 0.039 0.096 0.100 0.01989, \
 27 0.038 0.093 0.100 0.01902, \
 28 0.036 0.089 0.091 0.01866, \
 29 0.035 0.086 0.091 0.01803, \
 30 0.034 0.083 0.084 0.01766, \
 31 0.033 0.081 0.084 0.01688, \
 32 0.032 0.078 0.084 0.01655, \
 33 0.031 0.076 0.077 0.01585, \
 34 0.030 0.074 0.077 0.01532, \
 35 0.029 0.071 0.072 0.01532, \
 36 0.028 0.069 0.072 0.01494, \
 37 0.028 0.068 0.072 0.01425, \
 38 0.027 0.066 0.067 0.01393, \
 39 0.026 0.064 0.067 0.01370, \
 40 0.025 0.063 0.067 0.01317, \
 41 0.025 0.061 0.063 0.01306, \
 42 0.024 0.060 0.063 0.01261, \
 43 0.024 0.058 0.059 0.01248, \
 44 0.023 0.057 0.059 0.01210, \
 45 0.023 0.056 0.059 0.01175, \
 46 0.022 0.054 0.056 0.01175, \
 47 0.022 0.053 0.056 0.01153, \
 48 0.021 0.052 0.053 0.01126, \
 49 0.021 0.051 0.053 0.01102, \
 50 0.020 0.050 0.053 0.01072, \
 51 0.020 0.049 0.050 0.01053, \
 52 0.020 0.048 0.050 0.01036, \
 53 0.019 0.047 0.048 0.01028, \
 54 0.019 0.046 0.048 0.01015, \
 55 0.019 0.045 0.046 0.01007, \
 56 0.018 0.045 0.046 0.00961, \
 57 0.018 0.044 0.046 0.00952, \
 58 0.018 0.043 0.044 0.00945, \
 59 0.017 0.042 0.044 0.00934, \
 60 0.017 0.042 0.044 0.00895, \
 61 0.017 0.041 0.042 0.00892, \
 62 0.017 0.040 0.042 0.00882, \
 63 0.016 0.040 0.042 0.00847, \
 64 0.016 0.039 0.040 0.00847, \
 65 0.016 0.038 0.039 0.00847, \
 66 0.016 0.038 0.039 0.00828, \
 67 0.015 0.037 0.038 0.00828, \
 68 0.015 0.037 0.038 0.00810, \
 69 0.015 0.036 0.038 0.00800, \
 70 0.015 0.036 0.038 0.00771, \
 71 0.015 0.035 0.036 0.00771, \
 72 0.014 0.035 0.036 0.00751, \
 73 0.014 0.034 0.035 0.00751, \
 74 0.014 0.034 0.035 0.00738, \
 75 0.014 0.033 0.034 0.00738, \
 76 0.014 0.033 0.034 0.00726, \
 77 0.013 0.032 0.033 0.00726, \
 78 0.013 0.032 0.033 0.00716, \
 79 0.013 0.032 0.033 0.00693, \
 80 0.013 0.031 0.032 0.00693, \
 81 0.013 0.031 0.032 0.00683, \
 82 0.013 0.030 0.031 0.00683, \
 83 0.013 0.030 0.031 0.00673, \
 84 0.012 0.030 0.031 0.00653, \
 85 0.012 0.029 0.030 0.00653, \
 86 0.012 0.029 0.030 0.00645, \
 87 0.012 0.029 0.030 0.00627, \
 88 0.012 0.028 0.029 0.00627, \
 89 0.012 0.028 0.029 0.00620, \
 90 0.012 0.028 0.029 0.00603, \
 91 0.011 0.027 0.027 0.00649, \
 92 0.011 0.027 0.027 0.00632, \
 93 0.011 0.027 0.027 0.00615, \
 94 0.011 0.027 0.027 0.00598, \
 95 0.011 0.026 0.027 0.00594, \
 96 0.011 0.026 0.027 0.00578, \
 97 0.011 0.026 0.027 0.00563, \
 98 0.011 0.026 0.027 0.00549, \
 99 0.011 0.025 0.026 0.00549, \
100 0.010 0.025 0.026 0.00546", dtab, ",")
}
' <<!
# データ例
# 金額 耐用年数
100000 10
!

注1 - 2007 年 4 月 1 日以降に取得した資産の定率減価償却

減価償却資産の耐用年数等に関する省令

注2 - X0 / n の極限値

  log(1 + x) = x - x^2/2 + x^3/3 - x^4/4 + ..    (-1 < x <= 1.0)
から、容易に、
  m / n = 1 - 1 / (2.5 - (2.5/2)*(2.5/n) + ..)
	〜 0.60

それにしても、コンピュータは誰でも使う時代ですから、文系官僚にも数学を教えて、 ムダをなくし、省資源に取り組んでほしいものです。

平林浩一, (C) 2007