Skip to content

MO state-income-tax add-back ignores the OBBBA SALT cap phase-down, wiping itemized deductions for high earners #8660

@PavelMakarchuk

Description

@PavelMakarchuk

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions