Fix PA employer-plan retirement exemption and NJ 529 deduction ordering (#8848, #8849); close #8830#8922
Merged
Conversation
PA (PolicyEngine#8848): 61 Pa. Code Sec. 101.6 treats IRAs, SEPs, Keogh plans, and federally qualified employee pension plans (401(k), 403(b)) alike - distributions made on or after retirement after reaching the plan's age or service requirements are not taxable PA compensation. PE previously excluded only IRA distributions, so post-retirement 401(k)/403(b)/SEP/Keogh distributions were taxed at 3.07%. Route all eligible employer-plan distribution sources through pa_nontaxable_retirement_distributions via a new page-anchored source-list parameter. NJ (PolicyEngine#8849): The NJBEST 529 contribution deduction (N.J.S.A. 54A:3-13, Form NJ-1040 line 37a) is a taxable-income deduction applied after the gross-income line (line 29) that the filing threshold (N.J.S.A. 54A:2-4) keys on. PE netted it into nj_agi via subtractions.yaml, wrongly zeroing 529 contributors just above the $10k/$20k gross-income filing threshold. Move it into nj_total_deductions alongside its 54A:3 sibling nj_medical_expense_deduction. Tests: PA pre/post-retirement cases for each plan type plus the issue reported household; NJ boundary test at the filing threshold confirming 529 contributions no longer move nj_agi. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8922 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 3 2 -1
Lines 55 25 -30
=========================================
- Hits 55 25 -30
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…ct effective date Moving nj_529_deduction from the dated subtractions list to nj_total_deductions.adds removed the only pre-2022 gate; the cap parameter now pins it to zero for 2021 with a regression test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis
added a commit
that referenced
this pull request
Jul 6, 2026
Maine EITC (issue #8927): 36 M.R.S. Sec. 5219-S(5)-(6) restores the EITC to childless filers aged 18-24 whom federal Sec. 32 bars only on the minimum-age floor. Add me_childless_eitc_age_eligible and me_pro_forma_childless_eitc, and take the larger of the federal EITC and the pro forma amount in me_eitc. Maine STFC (issue #8928): the 2025 Schedule PTFC/STFC line 17 table shows a base of $215 for joint, head of household, and surviving spouse filers with no dependents; the model had $220. Set the 2025 base to $215 and re-split the dependent add-ons to $35/$65 so the with-dependent totals ($250/$280) are unchanged. Also add reported-household regression tests for issues #8710 (DE per-column credit cap, already fixed by #7940) and #8589 (PA retiree income, already fixed by #8922). Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three state income-tax accuracy issues. Two are fixed here with dated, page-anchored parameters and tests; one is already correct on
mainand is documented below with evidence for closing.main(PR #8911) — close with evidence#8848 — PA post-retirement employer-plan distributions
Law. 61 Pa. Code § 101.6 defines "Old Age or Retirement Benefit Plans" to include "Individual Retirement plans (IRA), Simplified Employee Pension Plans (SEP), Keogh plans, Federally qualified employe pension plans and similar old age or retirement benefit plans," and makes their distributions non-taxable when "made upon or after retirement from service after reaching a specific age or after a stated period of employment." The PA PIT Guide (Gross Compensation) and the PA DOR 1099-R FAQ (a_id 1470, Code 7 normal distribution) say the same: a distribution from an eligible PA plan is not taxable once the plan's age/service requirements for retirement are met.
Bug.
taxable_401k_distributions,taxable_403b_distributions,taxable_sep_distributions, andkeogh_distributionsall sit intaxable_retirement_distributions— separate fromtaxable_pension_income(which the pension path already exempts viapa_nontaxable_pension_income).pa_nontaxable_retirement_distributionsonly excludedtaxable_ira_distributions, so post-retirement 401(k)/403(b)/SEP/Keogh distributions stayed inpa_total_taxable_incomeand were taxed at 3.07%.Fix. New parameter
gov/states/pa/tax/income/nontaxable_retirement_distribution_sourceslists all five eligible distribution sources;pa_nontaxable_retirement_distributionssums them and applies the existingretirement_age_threshold(59½) proxy, mirroring the IRA treatment the issue asks for. The previously-passing "Case 3" test that pinned the old behavior (401(k) at 67 → taxed) is corrected to the exempt result, and cases for 403(b)/SEP/Keogh plus the issue's reported household (PolicyBench scenario_085: PA single, age 67, $1,560 401(k)) are added.#8849 — NJ 529 deduction shifts the filing threshold
Law. NJ's filing-threshold zero-tax floor (N.J.S.A. 54A:2-4) tests gross income — Form NJ-1040 line 29 ("more than $20,000 … $10,000 if single/MFS"). The NJBEST 529 contribution deduction (N.J.S.A. 54A:3-13; P.L. 2021 c.419) is a New Jersey College Affordability Act deduction on line 37a, in the deductions block (lines 30–37c) between gross income (line 29) and taxable income (line 39) — the same 54A:3 family as the medical-expense deduction PE already models in
nj_total_deductions.Bug.
nj_529_deductionwas listed insubtractions.yaml, which feedsnj_total_income→nj_agi(PE's gross-income line). Away from the threshold this is harmless (the deduction lands either way), but at the boundary it netted intonj_agiand wrongly pulled 529 contributors just above $10k/$20k below the threshold, zeroing their tax and flippingnj_property_tax_deduction_eligible.Fix. Remove
nj_529_deductionfromsubtractions.yaml(collapsing the now-redundant 2022 breakpoint) and add it tonj_total_deductionsalongsidenj_medical_expense_deduction. Its income-limit test reads federaladjusted_gross_income, notnj_agi, so this creates no circular dependency. A boundary test confirms a single filer with $10,500 gross income and $10,000 of 529 contributions keepsnj_agi = 10,500(above the threshold, unmoved by the deduction) with the deduction landing innj_total_deductions.#8830 — OK §401 employer pensions in TY2021 (already fixed)
Fixed on
mainby PR #8911 (commit1f61736c69).ok_pension_subtractionnow excludes private-employer (IRC §401) pension income before 2022 via the dated boolean parameterprivate_pension_qualifies(2021 →false, 2022 →true), page-anchored to Form 511 Schedule 511-A line 6 for both years. The reported-household case is already covered by baseline tests: age 66 withtaxable_private_pension_income: 20_000yieldsok_pension_subtraction: 0in 2021 and10,000in 2022, with a companion case confirming government pensions still qualify in 2021. No code change needed; recommend closing #8830 with reference to #8911.Tests
All baseline state trees pass on this branch:
Run:
Closes #8848, closes #8849, closes #8830.
🤖 Generated with Claude Code