配偶者の年収を入れたら、自分の手取りまで動いた
世帯モードを作ろうとして、配偶者の手取りだけ出せばいいと思っていた。
実際に計算してみたら、動いていたのは自分の手取りのほうだった。
手取りを増やそう!をつくる第9回 / 全12回目次
「二人分の手取りを見たい」という要望から、世帯モードを作ることにした。
最初はシンプルに考えていた。本人の手取りと配偶者の手取りを、それぞれ別々に計算して並べればいい。そのつもりだった。
ところが配偶者特別控除を実装している途中で、それでは足りないと気づいた。
配偶者の年収が上がると、本人が使える配偶者特別控除が減っていく。控除が減れば、本人の課税所得が増える。つまり本人の税額も動く。
二人を、同時に計算しないといけない
配偶者特別控除は給与収入150万円台までは満額の38万円で、169万円あたりまではそのまま続き、そこから201万円に向けて段階的に減っていく。
このカーブを描くには、配偶者の年収を1万円ずつ動かすたびに、本人の計算をまるごとやり直す必要がある。片方だけ動かして終わり、という設計では成立しなかった。
householdCurve() という関数を作って、配偶者の年収を横軸にしながら、その都度「本人+配偶者」のペア全体を再計算するようにした。
型を書いていて一度詰まったのが、この関数の入力だった。配偶者の年収は横軸として渡すので、固定の入力からは抜く必要がある。Omit で、その1項目だけを型から外して解決した。
働き損の区間は、単身のときと同じ形で出た
年収の壁カーブを描いたときと同じで、配偶者の年収を上げたのに世帯の手取りが下がる区間ができる。
配偶者自身の社会保険加入と、本人の配偶者控除の縮小が、同じあたりの年収で重なって効くためだ。
この区間には、単身モードの年収カーブで使っていた「赤い点」をそのまま流用した。
見せ方を変える理由が無かった。同じ現象には同じ見た目を使ったほうが、意味が伝わりやすい。
実装してみて感じたのは、世帯の手取りは「二人分を足し算する」話ではないということだ。
片方の選択が、もう片方の税額に直接効いてくる。単身のシミュレーターを二回動かすのとは、そもそも別の計算だった。
※運営者が個人で書いているnoteです。