Skip to content

Exclude state income tax from federal SALT under --disable-salt#997

Open
PavelMakarchuk wants to merge 1 commit into
mainfrom
federal-salt-exclude-state-income-tax
Open

Exclude state income tax from federal SALT under --disable-salt#997
PavelMakarchuk wants to merge 1 commit into
mainfrom
federal-salt-exclude-state-income-tax

Conversation

@PavelMakarchuk

Copy link
Copy Markdown
Collaborator

Problem

TAXSIM-35 deducts mortgage interest and property tax on the federal return but not state income tax. Verified against the taxsimtest binary across states and years:

case binary federal itemized
NY single $84K wages + $37K mortgage (2024 & 2025) $37,000 (mortgage only; $2,420 NY tax not deducted)
CA single $200K wages + $30K mortgage + $15K property tax $45,000 (mortgage + property; $10,700 CA tax not deducted)

But the prior three-pass --disable-salt re-introduced the computed state tax as a fixed federal SALT input (Pass B), overshooting TAXSIM by the full state-tax amount on every itemizing record. Surfaced by #971.

Fix

Replace the three-pass with a single SALT-disabled pass: zero state_and_local_sales_or_income_tax for both the state and federal computation, so federal Schedule A excludes state income/sales tax. Property tax (real_estate_taxes) still flows through.

Verification (vs taxsimtest binary)

60-record itemizing sample (10 states × 3 incomes × 2 property-tax levels):

mean |federal diff| within $15
before (three-pass) $1,184.8 0/60
after (single-pass) $0.0 60/60

Updates the disable-salt test to assert the federal itemized excludes state income tax. Full suite: 142 passed.

Closes #971

🤖 Generated with Claude Code

TAXSIM-35 deducts mortgage interest and property tax on the federal
return but does not deduct state income tax. Verified against the
taxsimtest binary across states and years (e.g. NY single $84K wages +
$37K mortgage -> federal itemized $37,000, with the state tax excluded).

The prior three-pass --disable-salt re-introduced the computed state tax
as a fixed federal SALT input (Pass B), which overshot TAXSIM by the full
state-tax amount on every itemizing record. Replace it with a single
SALT-disabled pass that zeros state_and_local_sales_or_income_tax for both
the state and federal computation (property tax via real_estate_taxes
still flows through).

On a 60-record itemizing sample (10 states x 3 incomes x 2 property-tax
levels) this cuts the mean federal fiitax mismatch vs the binary from
~$1,185 (0/60 within $15) to $0 (60/60 exact). taxsim #971 (CA joint,
$164K interest + $50K mortgage) now returns fiitax $14,921.55, matching
the binary.

State-side outputs are unchanged (the pass already computed state tax
with SALT zeroed). Updates the disable-salt test to assert the federal
itemized excludes state income tax.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
policyengine-taxsim Ready Ready Preview, Comment Jun 17, 2026 10:44pm

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CA joint 2025 164Kintrec 50Kmortgage

1 participant