Skip to content

PA taxes employer pension for retirees aged 59.5-64 (is_retired age-65 cutoff inconsistent with the 59.5 retirement-distribution threshold) #9386

Description

@DTrim99

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.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions