Issue
Pennsylvania excludes commonly recognized pension / old-age / retirement benefits from PA taxable income for retirees, but PolicyEngine taxes an employer pension when the recipient is aged 59.5–64.
pa_nontaxable_pension_income gates the exclusion on is_retired, which is hard-coded to age ≥ 65:
def formula(person, period, parameters):
retired = person("is_retired", period) # is_retired = age >= 65
us_taxable_pension = person("taxable_pension_income", period)
return where(retired, us_taxable_pension, 0)
But the parallel variable pa_nontaxable_retirement_distributions (IRA/401(k)/403(b)/SEP/Keogh) uses PA's own retirement_age_threshold = 59.5:
retired = person("age", period) >= p.retirement_age_threshold # 59.5
Why this is inconsistent
61 Pa. Code §101.6 treats IRAs, SEPs, Keogh plans, and federally qualified employee pension plans alike — all are excluded once the recipient reaches the plan's retirement age. The PA-40 IN (2023, p.8) lists as NOT taxable:
Commonly recognized pension, old age, or retirement benefits paid after becoming eligible to retire, and retiring
There is no basis for excluding IRA/401(k) distributions at 59.5 but taxing an employer pension until 65. A 60–64-year-old drawing an employer pension with no wages has retired, and PA excludes it.
Impact (from TAXSIM #1165)
PA 2023 joint filer, primary 72 / spouse 64, no wages; $37,636 interest, $201,382 pension, $52,916 Social Security. The pension is split 50/50 across spouses, and the 64-year-old's half ($100,691) is wrongly taxed because 64 < 65:
- PE: PA AGI = interest $37,636 + spouse's half $100,691 = $138,327, tax $4,246.64
- Correct (TaxAct): 100% of pension + SS excluded → PA AGI = $37,636 (interest only), tax $1,155.42
Fix
Change pa_nontaxable_pension_income to gate on PA's retirement_age_threshold (59.5), matching pa_nontaxable_retirement_distributions and §101.6.
Reported via PolicyEngine/policyengine-taxsim#1165.
Issue
Pennsylvania excludes commonly recognized pension / old-age / retirement benefits from PA taxable income for retirees, but PolicyEngine taxes an employer pension when the recipient is aged 59.5–64.
pa_nontaxable_pension_incomegates the exclusion onis_retired, which is hard-coded to age ≥ 65:But the parallel variable
pa_nontaxable_retirement_distributions(IRA/401(k)/403(b)/SEP/Keogh) uses PA's ownretirement_age_threshold= 59.5:Why this is inconsistent
61 Pa. Code §101.6 treats IRAs, SEPs, Keogh plans, and federally qualified employee pension plans alike — all are excluded once the recipient reaches the plan's retirement age. The PA-40 IN (2023, p.8) lists as NOT taxable:
There is no basis for excluding IRA/401(k) distributions at 59.5 but taxing an employer pension until 65. A 60–64-year-old drawing an employer pension with no wages has retired, and PA excludes it.
Impact (from TAXSIM #1165)
PA 2023 joint filer, primary 72 / spouse 64, no wages; $37,636 interest, $201,382 pension, $52,916 Social Security. The pension is split 50/50 across spouses, and the 64-year-old's half ($100,691) is wrongly taxed because 64 < 65:
Fix
Change
pa_nontaxable_pension_incometo gate on PA'sretirement_age_threshold(59.5), matchingpa_nontaxable_retirement_distributionsand §101.6.Reported via PolicyEngine/policyengine-taxsim#1165.