Summary
mo_net_state_income_taxes caps the state-income-tax add-back using the static base SALT cap, ignoring the OBBBA income-based phase-down of that cap. For high-income filers (whose federal SALT deduction has phased down to the $10,000 floor) it subtracts far more state income tax than was actually deducted federally, wiping out other itemized deductions (e.g. mortgage interest) and forcing the MO standard deduction.
Originating TAXSIM comparison: PolicyEngine/policyengine-taxsim#975
Mechanism (MO MFJ, $789,125 interest, $50,000 mortgage, TY2025)
Federal side (correct): the OBBBA SALT cap phases down from $40,000 to the $10,000 floor at this income, so salt_deduction = $10,000 and itemized_taxable_income_deductions = $50,000 mortgage + $10,000 SALT = $60,000.
Per Form MO-A Part 2, Missouri adds back the state/local income tax included in the federal itemized deductions — here $10,000. But mo_net_state_income_taxes computes:
salt_cap = p.salt_and_real_estate.cap[filing_status] # static $40,000, NOT phased down
...
return where(uncapped_salt > salt_cap, salt_cap * ratio, uncapped_itax) # uncapped_itax = $36,172
Because uncapped_salt ($36,172) < the static salt_cap ($40,000), it returns the full $36,172 — far more than the $10,000 actually deducted.
|
PE |
Correct (NBER binary / TaxAct) |
mo_net_state_income_taxes |
$36,172 |
$10,000 |
mo_itemized_deductions |
$23,827 → standard |
$50,000 |
mo_income_tax |
$35,256 |
$34,387 |
Suggested fix
The add-back should be limited to the state income tax actually included in the federal SALT deduction after the phase-down (e.g. derive it from salt_deduction), not recomputed against the static base salt_cap.
Integration test
- name: MO state-income-tax add-back respects the OBBBA SALT cap phase-down
period: 2025
input:
people:
head: {age: 45, taxable_interest_income: 789_125.13, deductible_mortgage_interest: 50_000}
spouse: {age: 45}
tax_units: {tax_unit: {members: [head, spouse]}}
households: {household: {members: [head, spouse], state_code: MO}}
output:
mo_itemized_deductions: 50_000
Summary
mo_net_state_income_taxescaps the state-income-tax add-back using the static base SALT cap, ignoring the OBBBA income-based phase-down of that cap. For high-income filers (whose federal SALT deduction has phased down to the $10,000 floor) it subtracts far more state income tax than was actually deducted federally, wiping out other itemized deductions (e.g. mortgage interest) and forcing the MO standard deduction.Originating TAXSIM comparison: PolicyEngine/policyengine-taxsim#975
Mechanism (MO MFJ, $789,125 interest, $50,000 mortgage, TY2025)
Federal side (correct): the OBBBA SALT cap phases down from $40,000 to the $10,000 floor at this income, so
salt_deduction= $10,000 anditemized_taxable_income_deductions= $50,000 mortgage + $10,000 SALT = $60,000.Per Form MO-A Part 2, Missouri adds back the state/local income tax included in the federal itemized deductions — here $10,000. But
mo_net_state_income_taxescomputes:Because
uncapped_salt($36,172) < the staticsalt_cap($40,000), it returns the full $36,172 — far more than the $10,000 actually deducted.mo_net_state_income_taxesmo_itemized_deductionsmo_income_taxSuggested fix
The add-back should be limited to the state income tax actually included in the federal SALT deduction after the phase-down (e.g. derive it from
salt_deduction), not recomputed against the static basesalt_cap.Integration test