Ruby で学ぶアメリカ税制 - 高齢者・障害者税額控除

高齢者または障害者向けの優遇税制です。

以下 Wiley の記述に基づいて、話します。IRS Publication にはあたっていないので、細部で間違いがあるかもしれませんが、ご了承ください。Wiley では、障害者のための税額控除には詳しい記述がありませんので、高齢者に話を絞ります。

高齢者の申告資格、免税の社会保障的給付、AGI などによって、税額控除の金額が複雑に変化します。USCPA 試験ではこれが出題されることがあるようです。

では早速プログラムを見てください。

# fs 申告資格
# age 納税者の年齢
# sp_age 納税者の配偶者の年齢
# agi AGI
# exclusion 年金給付・社会保障給付等、所得不参入となる社会保障的給付
def credit_for_elderly(fs, age, sp_age, agi, exclusion)
  return 0 if age < 65 && sp_age < 65

  init_amt = case
  when (fs == :single && age >= 65) || (fs == :joint_return && !(age >= 65 && sp_age >= 65))
    5000
  when fs == :joint_return && (age >= 65 && sp_age >= 65)
    7500
  when fs == :filing_sparately && age >= 65
    3750
  end

  agi_limit = case
  when fs == :single
    7500
  when fs == :joint_return
    10000
  when fs == :filing_sparately
    5000
  end

  credit = 0.15 * (init_amt - exclusion - 0.5 * [agi - agi_limit, 0].max)
end

def main
  fs = :joint_return
  age = 67
  sp_age = 65
  agi = 12000
  exclusion = 2000
  puts "credit = %d" % credit_for_elderly(fs, age, sp_age, agi, exclusion)
end

main

上の例は、Wiley から採ったものですが、実行結果は、

675

となって、Wiley の結果と一致します。

credit = 0.15 * (init_amt - exclusion - 0.5 * [agi - agi_limit, 0].max)

という式がすべてを物語っていますね。面倒なのは申告資格と年齢による各種閾値の算出だけです。

  • Single => 5,000, 7,500
  • Joint Return => 7,500, 10,000

となって、7,500を中心にプラスマイナス 2,500 だと覚えるのも一つの手かもしれません。