From a884cbcd2805cc7611f31cc2872a8c2aa14d1ba6 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Sun, 22 Feb 2026 20:46:57 -0500 Subject: [PATCH] Fix Arkansas military exemptions (closes #7392, #7393) Active-duty military service pay is 100% exempt from AR gross income per Act 1408 of 2013. Military retirement is fully exempt (no $6K cap), with the $6K cap applying only to pension/IRA income reduced by military retirement amount. Co-Authored-By: Claude Opus 4.6 --- changelog_entry.yaml | 4 ++ .../gross_income/sources/individual.yaml | 1 - .../income/gross_income/sources/joint.yaml | 1 - .../ar/tax/income/ar_gross_income_indiv.yaml | 16 +++++ ..._disability_benefits_exemption_person.yaml | 63 +++++++++++++++++-- ...or_disability_benefits_exemption_person.py | 11 ++-- 6 files changed, 83 insertions(+), 13 deletions(-) create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/ar_gross_income_indiv.yaml diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..0d178dbbc69 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: patch + changes: + fixed: + - Fix Stay NJ benefit formula order of operations and add Senior Freeze offset per P.L. 2024 c.88. diff --git a/policyengine_us/parameters/gov/states/ar/tax/income/gross_income/sources/individual.yaml b/policyengine_us/parameters/gov/states/ar/tax/income/gross_income/sources/individual.yaml index 1b2314b826d..965cf02da7b 100644 --- a/policyengine_us/parameters/gov/states/ar/tax/income/gross_income/sources/individual.yaml +++ b/policyengine_us/parameters/gov/states/ar/tax/income/gross_income/sources/individual.yaml @@ -3,7 +3,6 @@ values: 2021-01-01: - irs_employment_income # Line 8 - self_employment_income # Line 8 - - military_service_income # Line 9 - interest_income # Line 10 - dividend_income # Line 11 - alimony_income # Line 12 diff --git a/policyengine_us/parameters/gov/states/ar/tax/income/gross_income/sources/joint.yaml b/policyengine_us/parameters/gov/states/ar/tax/income/gross_income/sources/joint.yaml index 45a2aff8800..51526392197 100644 --- a/policyengine_us/parameters/gov/states/ar/tax/income/gross_income/sources/joint.yaml +++ b/policyengine_us/parameters/gov/states/ar/tax/income/gross_income/sources/joint.yaml @@ -3,7 +3,6 @@ values: 2021-01-01: - irs_employment_income # Line 8 - self_employment_income # Line 8 - - military_service_income # Line 9 - interest_income # Line 10 - dividend_income # Line 11 - alimony_income # Line 12 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/ar_gross_income_indiv.yaml b/policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/ar_gross_income_indiv.yaml new file mode 100644 index 00000000000..a9a908a765b --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/ar_gross_income_indiv.yaml @@ -0,0 +1,16 @@ +- name: Arkansas active-duty military service pay excluded from gross income + period: 2024 + input: + people: + person1: + irs_employment_income: 50_000 + military_service_income: 10_000 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: AR + output: + ar_gross_income_indiv: 50_000 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/exemptions/ar_capped_retirement_or_disability_benefits_exemption_person.yaml b/policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/exemptions/ar_capped_retirement_or_disability_benefits_exemption_person.yaml index 6aa2a8c59ca..ffc4303687f 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/exemptions/ar_capped_retirement_or_disability_benefits_exemption_person.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/exemptions/ar_capped_retirement_or_disability_benefits_exemption_person.yaml @@ -1,13 +1,30 @@ -- name: Arkansas capped exemption for retirement or disability benefits (below the cap) +- name: Arkansas military retirement fully exempt, no pension period: 2021 input: people: person1: - ar_retirement_or_disability_benefits_exemption_person: 5_000 + ar_retirement_or_disability_benefits_exemption_person: 0 + ar_military_retirement_income_person: 8_000 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: AR + output: + ar_capped_retirement_or_disability_benefits_exemption_person: 8_000 + +- name: Arkansas military retirement $4K plus pension $1K (both under cap) + period: 2021 + input: + people: + person1: + ar_retirement_or_disability_benefits_exemption_person: 1_000 ar_military_retirement_income_person: 4_000 tax_units: tax_unit: - members: [person1] + members: [person1] households: household: members: [person1] @@ -15,16 +32,50 @@ output: ar_capped_retirement_or_disability_benefits_exemption_person: 5_000 -- name: Arkansas capped exemption for retirement or disability benefits (over the cap) +- name: Arkansas military retirement $2K plus pension $3K (remaining cap allows full pension) + period: 2021 + input: + people: + person1: + ar_retirement_or_disability_benefits_exemption_person: 3_000 + ar_military_retirement_income_person: 2_000 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: AR + output: + ar_capped_retirement_or_disability_benefits_exemption_person: 5_000 + +- name: Arkansas military retirement $8K consumes cap so pension capped at 0 + period: 2021 + input: + people: + person1: + ar_retirement_or_disability_benefits_exemption_person: 3_000 + ar_military_retirement_income_person: 8_000 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: AR + output: + ar_capped_retirement_or_disability_benefits_exemption_person: 8_000 + +- name: Arkansas pension only capped at $6K period: 2021 input: people: person1: ar_retirement_or_disability_benefits_exemption_person: 7_000 - ar_military_retirement_income_person: 4_000 + ar_military_retirement_income_person: 0 tax_units: tax_unit: - members: [person1] + members: [person1] households: household: members: [person1] diff --git a/policyengine_us/variables/gov/states/ar/tax/income/exemptions/ar_capped_retirement_or_disability_benefits_exemption_person.py b/policyengine_us/variables/gov/states/ar/tax/income/exemptions/ar_capped_retirement_or_disability_benefits_exemption_person.py index ff0f946df1c..e0aacc9fb66 100644 --- a/policyengine_us/variables/gov/states/ar/tax/income/exemptions/ar_capped_retirement_or_disability_benefits_exemption_person.py +++ b/policyengine_us/variables/gov/states/ar/tax/income/exemptions/ar_capped_retirement_or_disability_benefits_exemption_person.py @@ -8,7 +8,7 @@ class ar_capped_retirement_or_disability_benefits_exemption_person(Variable): unit = USD definition_period = YEAR reference = "https://www.dfa.arkansas.gov/images/uploads/incomeTaxOffice/2022_AR1000F_and_AR1000NR_Instructions.pdf#page=13" - defined_for = "ar_retirement_or_disability_benefits_exemption_person" + defined_for = StateCode.AR def formula(person, period, parameters): p = parameters( @@ -20,7 +20,8 @@ def formula(person, period, parameters): military_retirement_exemption = person( "ar_military_retirement_income_person", period ) - larger_exemption = max_( - eligible_pension_income, military_retirement_exemption - ) - return min_(larger_exemption, p.cap) + # Military retirement is fully exempt (no cap). + # The $6,000 cap applies to pension/IRA, reduced by military retirement. + remaining_cap = max_(p.cap - military_retirement_exemption, 0) + pension_exempt = min_(eligible_pension_income, remaining_cap) + return military_retirement_exemption + pension_exempt