From 82133f8e8dbad2c9a280256d001f321976d0b406 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Mon, 13 Jul 2026 10:29:48 -0400 Subject: [PATCH] Revert #8911: restore OK retirement subtraction for IRC 401 pensions pre-2022 (#9009) The 2021 Form 511 Packet (page 17) lists 'An employee pension benefit plan under IRC Section 401' as the first qualifying Schedule 511-A line 6 source, and the 2022 packet's line-6 text is word-for-word identical. #8911's premise that section 401 plans were added in 2022 was false, so it overstated pre-2022 OK income tax by 5% x $20,000 = $1,000 for MFJ records with >=$10k/person private pension. Reverts the private_pension_qualifies gate and restores min_(p.pension_limit, pensions) per person. Co-Authored-By: Claude Opus 4.8 --- .../revert-ok-401-pension-9009.fixed.md | 1 + .../private_pension_qualifies.yaml | 16 ----- .../gov/states/ok/tax/income/integration.yaml | 28 +++++++++ .../ok/tax/income/ok_pension_subtraction.yaml | 60 ++----------------- .../subtractions/ok_pension_subtraction.py | 13 +--- 5 files changed, 34 insertions(+), 84 deletions(-) create mode 100644 changelog.d/revert-ok-401-pension-9009.fixed.md delete mode 100644 policyengine_us/parameters/gov/states/ok/tax/income/agi/subtractions/private_pension_qualifies.yaml diff --git a/changelog.d/revert-ok-401-pension-9009.fixed.md b/changelog.d/revert-ok-401-pension-9009.fixed.md new file mode 100644 index 00000000000..081ff5db3e9 --- /dev/null +++ b/changelog.d/revert-ok-401-pension-9009.fixed.md @@ -0,0 +1 @@ +Restored the Oklahoma retirement benefit subtraction for private employer (IRC section 401) pension income before tax year 2022, which qualifies as an Other Retirement Income source on Schedule 511-A line 6. diff --git a/policyengine_us/parameters/gov/states/ok/tax/income/agi/subtractions/private_pension_qualifies.yaml b/policyengine_us/parameters/gov/states/ok/tax/income/agi/subtractions/private_pension_qualifies.yaml deleted file mode 100644 index 6410ef2e937..00000000000 --- a/policyengine_us/parameters/gov/states/ok/tax/income/agi/subtractions/private_pension_qualifies.yaml +++ /dev/null @@ -1,16 +0,0 @@ -description: Oklahoma includes private employer (IRC section 401) pension income in the retirement benefit subtraction if this is true. -values: - 2021-01-01: false - 2022-01-01: true - -metadata: - unit: bool - period: year - label: Oklahoma retirement benefit subtraction includes private employer pensions - reference: - - title: 2021 Form 511 Schedule 511-A, line 6 Other Retirement Income (IRC section 401 employer plans not listed) - href: https://oklahoma.gov/content/dam/ok/en/tax/documents/forms/individuals/past-year/2021/511-Pkt-2021.pdf#page=17 - - title: 2022 Form 511 Schedule 511-A, line 6 Other Retirement Income (IRC section 401 employer plans added) - href: https://oklahoma.gov/content/dam/ok/en/tax/documents/forms/individuals/past-year/2022/511-Pkt-2022.pdf#page=17 - - title: 2025 Form 511 Schedule 511-A, line 6 Other Retirement Income - href: https://oklahoma.gov/content/dam/ok/en/tax/documents/forms/individuals/current/511-Pkt.pdf#page=17 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ok/tax/income/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/ok/tax/income/integration.yaml index 2ae4406b0aa..7d1514dc4fc 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ok/tax/income/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ok/tax/income/integration.yaml @@ -347,3 +347,31 @@ ok_standard_deduction: 12_700 # Sales tax credit: 4 exemptions * $40 = $160 (has dependents, under $50k) ok_stc: 160 + +- name: OK 2021 joint couple with private (IRC 401) employer pensions each claim the 10k other-retirement exclusion (taxsim 1083) + period: 2021 + absolute_error_margin: 2 + input: + people: + head: + age: 65 + taxable_private_pension_income: 19_228.76 + taxable_interest_income: 21_716.92 + social_security_retirement: 12_472.44 + spouse: + age: 68 + taxable_private_pension_income: 19_228.76 + taxable_interest_income: 21_716.92 + social_security_retirement: 12_472.44 + tax_units: + tax_unit: + members: [head, spouse] + households: + household: + members: [head, spouse] + state_code: OK + output: + adjusted_gross_income: 103_095 + ok_pension_subtraction: 20_000 + ok_agi: 61_891 + ok_income_tax: 2_005 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ok/tax/income/ok_pension_subtraction.yaml b/policyengine_us/tests/policy/baseline/gov/states/ok/tax/income/ok_pension_subtraction.yaml index 26d67fef107..8eb4180d070 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ok/tax/income/ok_pension_subtraction.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ok/tax/income/ok_pension_subtraction.yaml @@ -226,9 +226,9 @@ # Total: $10,000 + $10,000 = $20,000 ok_pension_subtraction: 20_000 -# Issue #8830: private employer (IRC 401) pensions were not a qualifying -# Schedule 511-A line 6 source until tax year 2022. -- name: OK pension subtraction - 2021 - private (IRC 401) pension does not qualify +# Private employer (IRC section 401) pensions are a qualifying Schedule 511-A +# line 6 source in 2021 (2021 Form 511 Packet, page 17). +- name: OK pension subtraction - 2021 - private (IRC 401) pension qualifies absolute_error_margin: 0.01 period: 2021 input: @@ -236,7 +236,6 @@ person1: is_tax_unit_head: true age: 66 - # Private employer (IRC 401) pension only; not a qualifying source in 2021 taxable_private_pension_income: 20_000 spm_units: spm_unit: @@ -252,56 +251,5 @@ members: [person1] state_code: OK output: - ok_pension_subtraction: 0 - -- name: OK pension subtraction - 2022 - private (IRC 401) pension now qualifies - absolute_error_margin: 0.01 - period: 2022 - input: - people: - person1: - is_tax_unit_head: true - age: 66 - taxable_private_pension_income: 20_000 - spm_units: - spm_unit: - members: [person1] - snap: 0 - tanf: 0 - tax_units: - tax_unit: - members: [person1] - aca_ptc: 0 - households: - household: - members: [person1] - state_code: OK - output: - # Private pension is a qualifying source from 2022, capped at $10,000 + # Private pension qualifies, capped at $10,000 ok_pension_subtraction: 10_000 - -- name: OK pension subtraction - 2021 - government pension still qualifies - absolute_error_margin: 0.01 - period: 2021 - input: - people: - person1: - is_tax_unit_head: true - age: 66 - # Government (non-private) pension remained a qualifying source in 2021 - taxable_public_pension_income: 8_000 - spm_units: - spm_unit: - members: [person1] - snap: 0 - tanf: 0 - tax_units: - tax_unit: - members: [person1] - aca_ptc: 0 - households: - household: - members: [person1] - state_code: OK - output: - ok_pension_subtraction: 8_000 diff --git a/policyengine_us/variables/gov/states/ok/tax/income/subtractions/ok_pension_subtraction.py b/policyengine_us/variables/gov/states/ok/tax/income/subtractions/ok_pension_subtraction.py index e499a359d00..27317d23c25 100644 --- a/policyengine_us/variables/gov/states/ok/tax/income/subtractions/ok_pension_subtraction.py +++ b/policyengine_us/variables/gov/states/ok/tax/income/subtractions/ok_pension_subtraction.py @@ -33,17 +33,6 @@ def formula(tax_unit, period, parameters): # Get pension income for each person in the tax unit pensions = tax_unit.members("taxable_pension_income", period) p = parameters(period).gov.states.ok.tax.income.agi.subtractions - # Before tax year 2022, private employer (IRC section 401) pensions - # were not a qualifying source on Schedule 511-A, line 6 (Other - # Retirement Income); Oklahoma added IRC section 401 employer plans - # starting in 2022. Exclude private pension income from the - # subtraction base before then. - private_pensions = tax_unit.members("taxable_private_pension_income", period) - qualifying_pensions = where( - p.private_pension_qualifies, - pensions, - max_(0, pensions - private_pensions), - ) # Each person can subtract up to the pension limit # Sum across all tax unit members - return tax_unit.sum(min_(p.pension_limit, qualifying_pensions)) + return tax_unit.sum(min_(p.pension_limit, pensions))