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 だと覚えるのも一つの手かもしれません。