From b4d810e6abd2ce20b2dcd1dfcef810e707822f76 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Fri, 16 Oct 2026 15:50:25 -0400 Subject: [PATCH 1/2] Use current-year federal EITC eligibility for the Indiana EITC from 2023 in_eitc_eligible recomputed the federal EITC with the January 1, 2023 parameter snapshot, so in TY2024 and TY2025 filers above the TY2023 investment income limit or completed phaseout lost the Indiana EITC. IC 6-3.1-21-6(a) and (e) and 26 U.S.C. 32(j)(1) index those amounts to the taxable year, so the static-conformity branch now returns federal EITC eligibility, matching the amount formula in in_eitc. Add TY2024 and TY2025 cases and controls, and set in_eitc_eligible unit test 8 (federal EITC of zero) to false. Fixes #9644. Co-Authored-By: Claude Opus 5.5 --- ...-9644-in-eitc-eligibility-indexed.fixed.md | 1 + .../gov/states/in/tax/income/in_eitc.yaml | 191 ++++++++++++++++++ .../in/tax/income/in_eitc_eligible.yaml | 6 +- .../earned_income_credit/in_eitc_eligible.py | 51 ++--- 4 files changed, 212 insertions(+), 37 deletions(-) create mode 100644 changelog.d/fix-9644-in-eitc-eligibility-indexed.fixed.md diff --git a/changelog.d/fix-9644-in-eitc-eligibility-indexed.fixed.md b/changelog.d/fix-9644-in-eitc-eligibility-indexed.fixed.md new file mode 100644 index 00000000000..a9c1a8442fd --- /dev/null +++ b/changelog.d/fix-9644-in-eitc-eligibility-indexed.fixed.md @@ -0,0 +1 @@ +Base Indiana EITC eligibility in tax years 2024 and 2025 on the current-year federal EITC instead of a recomputed credit with the frozen 2023 investment income limit and phaseout amounts, as IC 6-3.1-21-6(a) and (e) index those amounts to the taxable year. diff --git a/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc.yaml b/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc.yaml index 0ff01cd9ce9..0e843891d12 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc.yaml @@ -116,3 +116,194 @@ household: {members: [parent], state_fips: 18} output: in_eitc: 61.20 + +- name: Indiana EITC TY2025 uses the 2025 investment income limit for eligibility + # IC 6-3.1-21-6(a) and (e): section 32 as in effect on January 1, 2023 + # indexes its amounts to the taxable year (26 U.S.C. 32(j)(1)). + # Rev. Proc. 2024-40 sec. 2.06: TY2025 investment income limit $11,950; + # two children: maximum credit $7,152, phaseout threshold $23,350, rate 21.06%. + # Interest $11,500 is above the TY2023 limit ($11,000) but within $11,950. + # AGI = 20,000 + 11,500 = 31,500. + # Federal EITC = 7,152 - 21.06% x (31,500 - 23,350) = 7,152 - 1,716.39 = 5,435.61. + # Indiana EITC = 10% x 5,435.61 = 543.56. + period: 2025 + absolute_error_margin: 0.01 + input: + people: + head: + age: 30 + employment_income: 20_000 + taxable_interest_income: 11_500 + child1: + age: 5 + is_tax_unit_dependent: true + child2: + age: 6 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [head, child1, child2] + spm_units: + spm_unit: + members: [head, child1, child2] + households: + household: + members: [head, child1, child2] + state_code: IN + output: + eitc: 5_435.61 + in_eitc_eligible: true + in_eitc: 543.56 + +- name: Indiana EITC TY2025 childless filer past the TY2023 completed phaseout + # Rev. Proc. 2024-40 sec. 2.06: TY2025 no children: maximum credit $649, + # phaseout threshold $10,620, rate 7.65% (completed phaseout $19,104). + # Wages $18,000 are past the TY2023 completed phaseout ($17,640). + # Federal EITC = 649 - 7.65% x (18,000 - 10,620) = 649 - 564.57 = 84.43. + # Indiana EITC = 10% x 84.43 = 8.44. + period: 2025 + absolute_error_margin: 0.01 + input: + people: + head: + age: 30 + employment_income: 18_000 + tax_units: + tax_unit: + members: [head] + spm_units: + spm_unit: + members: [head] + households: + household: + members: [head] + state_code: IN + output: + eitc: 84.43 + in_eitc_eligible: true + in_eitc: 8.44 + +- name: Indiana EITC TY2024 uses the 2024 investment income limit for eligibility + # Rev. Proc. 2023-34 sec. 3.06: TY2024 investment income limit $11,600; + # two children: maximum credit $6,960, phaseout threshold $22,720, rate 21.06%. + # Interest $11,300 is above the TY2023 limit ($11,000) but within $11,600. + # AGI = 20,000 + 11,300 = 31,300. + # Federal EITC = 6,960 - 21.06% x (31,300 - 22,720) = 6,960 - 1,806.95 = 5,153.05. + # Indiana EITC = 10% x 5,153.05 = 515.31. + period: 2024 + absolute_error_margin: 0.01 + input: + people: + head: + age: 30 + employment_income: 20_000 + taxable_interest_income: 11_300 + child1: + age: 5 + is_tax_unit_dependent: true + child2: + age: 6 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [head, child1, child2] + spm_units: + spm_unit: + members: [head, child1, child2] + households: + household: + members: [head, child1, child2] + state_code: IN + output: + eitc: 5_153.05 + in_eitc_eligible: true + in_eitc: 515.31 + +- name: Indiana EITC TY2024 childless filer past the TY2023 completed phaseout + # Rev. Proc. 2023-34 sec. 3.06: TY2024 no children: maximum credit $632, + # phaseout threshold $10,330, rate 7.65% (completed phaseout $18,591). + # Federal EITC = 632 - 7.65% x (18,000 - 10,330) = 632 - 586.76 = 45.24. + # Indiana EITC = 10% x 45.24 = 4.52. + period: 2024 + absolute_error_margin: 0.01 + input: + people: + head: + age: 30 + employment_income: 18_000 + tax_units: + tax_unit: + members: [head] + spm_units: + spm_unit: + members: [head] + households: + household: + members: [head] + state_code: IN + output: + eitc: 45.24 + in_eitc_eligible: true + in_eitc: 4.52 + +- name: Indiana EITC TY2023 control, interest above the TY2023 limit + # Rev. Proc. 2022-38 sec. 3.06: TY2023 investment income limit $11,000. + # Interest $11,500 exceeds it, so no federal EITC and no Indiana EITC. + period: 2023 + input: + people: + head: + age: 30 + employment_income: 20_000 + taxable_interest_income: 11_500 + child1: + age: 5 + is_tax_unit_dependent: true + child2: + age: 6 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [head, child1, child2] + spm_units: + spm_unit: + members: [head, child1, child2] + households: + household: + members: [head, child1, child2] + state_code: IN + output: + eitc: 0 + in_eitc_eligible: false + in_eitc: 0 + +- name: Indiana EITC TY2025 control, interest above the TY2025 limit + # Interest $11,951 exceeds the TY2025 limit of $11,950 (Rev. Proc. 2024-40 + # sec. 2.06(2)), so no federal EITC and no Indiana EITC. + period: 2025 + input: + people: + head: + age: 30 + employment_income: 20_000 + taxable_interest_income: 11_951 + child1: + age: 5 + is_tax_unit_dependent: true + child2: + age: 6 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [head, child1, child2] + spm_units: + spm_unit: + members: [head, child1, child2] + households: + household: + members: [head, child1, child2] + state_code: IN + output: + eitc: 0 + in_eitc_eligible: false + in_eitc: 0 diff --git a/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc_eligible.yaml index 24442fa4938..5acea17f3ce 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc_eligible.yaml @@ -103,4 +103,8 @@ would_file_taxes_voluntarily: true takes_up_eitc: true output: - in_eitc_eligible: true + # No federal EITC means no Indiana EITC: IC 6-3.1-21-6(a)(2) bases the + # credit on the federal credit "claimed for the taxable year", and the + # 2025 IT-40 booklet (Schedule 5, line 6) requires that the filer "be + # eligible for and have claimed an EIC on your federal tax return". + in_eitc_eligible: false diff --git a/policyengine_us/variables/gov/states/in/tax/income/credits/earned_income_credit/in_eitc_eligible.py b/policyengine_us/variables/gov/states/in/tax/income/credits/earned_income_credit/in_eitc_eligible.py index 5df47ec3ac6..0a1ef7963a3 100644 --- a/policyengine_us/variables/gov/states/in/tax/income/credits/earned_income_credit/in_eitc_eligible.py +++ b/policyengine_us/variables/gov/states/in/tax/income/credits/earned_income_credit/in_eitc_eligible.py @@ -1,8 +1,4 @@ from policyengine_us.model_api import * -from policyengine_us.tools.state_eitc_helpers import ( - calculate_eitc_demographic_eligibility, - calculate_eitc_like_amount, -) class in_eitc_eligible(Variable): @@ -21,38 +17,21 @@ def formula(tax_unit, period, parameters): if not p.credits.earned_income.decoupled: return gets_federal_eitc if p.credits.earned_income.static_conformity_in_effect: - # IC 6-3-1-11 (Indiana's IRC definition for IC 6-3.1-21): - # - TY 2023 through 2025: IRC as in effect on January 1, 2023. - # - TY 2026 onward: IRC as in effect on January 1, 2026, per - # Indiana SEA 243 (2025). - # The snapshot dates are statutory literals; policyengine-core - # parameters do not support date-valued types, so they appear - # here rather than in the parameter tree. - snapshot_date = "2026-01-01" if period.start.year >= 2026 else "2023-01-01" - frozen_eitc = parameters.gov.irs.credits.eitc(snapshot_date) - child_count = tax_unit("eitc_child_count", period) - demographic_eligible = calculate_eitc_demographic_eligibility( - tax_unit, period, frozen_eitc, child_count - ) - filer_identification_eligible = tax_unit( - "filer_meets_eitc_identification_requirements", period - ) - investment_income_eligible = ( - tax_unit("eitc_relevant_investment_income", period) - <= frozen_eitc.phase_out.max_investment_income - ) - frozen_federal_eitc = calculate_eitc_like_amount( - tax_unit, - period, - parameters, - child_count, - demographic_eligible, - filer_identification_eligible, - separate_filer_eligible=frozen_eitc.eligibility.separate_filer, - eitc_parameters=frozen_eitc, - investment_income_eligible=investment_income_eligible, - ) - return frozen_federal_eitc > 0 + # IC 6-3.1-21-6(a) allows the credit to an individual "eligible + # for an earned income tax credit under Section 32 of the + # Internal Revenue Code as in effect on January 1, 2023" (IC + # 6-3-1-11; January 1, 2026 from TY2026 per SEA 243 (2025)). + # Section 32 as in effect on that date indexes its earned income, + # phaseout and investment income amounts to the calendar year in + # which the taxable year begins (26 U.S.C. 32(j)(1)), and + # IC 6-3.1-21-6(e) applies the same cost of living adjustments. + # Section 32 has not been amended since, so eligibility under + # the conformity-date text is eligibility for the current-year + # federal credit, not for the credit with the snapshot date's + # dollar amounts. The IT-40 booklet (Schedule 5, line 6) also + # requires that the filer "be eligible for and have claimed an + # EIC on your federal tax return". + return gets_federal_eitc # if Indiana EITC is decoupled from federal EITC # ... check separate filing status filing_status = tax_unit("filing_status", period) From d6911d8c4ad903f77a0da344afcd3d0302c346eb Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Mon, 26 Oct 2026 06:31:37 -0400 Subject: [PATCH 2/2] Cite SEA 243-2026 correctly and test the Indiana EITC at the investment limit - SEA 243 is the 2026 act. Its SECTION 6 moves the IC 6-3-1-11 date to January 1, 2026; it does not amend IC 6-3.1-21, whose section 6(a) keeps its own "as in effect on January 1, 2023". Fix the comment in in_eitc_eligible.py, the static_conformity_in_effect description and reference (enrolled act, PDF p. 36) and two TY2026 test comments. - Remove the us-in:eitc-current-versus-frozen-federal-base candidate. The 2023 text of section 32 indexes its amounts to the taxable year (32(j)(1); rulespec-us#1421 ruling 1), so the statute and Schedule IN-EIC give the same current-year amount and there is no conflict to register. - Add a TY2025 case with interest of exactly $11,950: 32(i)(1) denies the credit only if disqualified income "exceeds" the limit (Rev. Proc. 2024-40 sec. 2.06(2)), so the filer gets $5,340.84 federal and $534.08 Indiana EITC. Co-Authored-By: Claude Opus 5.5 --- .../static_conformity_in_effect.yaml | 6 +-- .../gov/states/in/tax/income/in_eitc.yaml | 53 ++++++++++++++++--- .../earned_income_credit/in_eitc_eligible.py | 6 ++- source_conflicts/candidates.yaml | 27 ---------- 4 files changed, 52 insertions(+), 40 deletions(-) diff --git a/policyengine_us/parameters/gov/states/in/tax/income/credits/earned_income/static_conformity_in_effect.yaml b/policyengine_us/parameters/gov/states/in/tax/income/credits/earned_income/static_conformity_in_effect.yaml index 7c88006d9fc..12e65dc3346 100644 --- a/policyengine_us/parameters/gov/states/in/tax/income/credits/earned_income/static_conformity_in_effect.yaml +++ b/policyengine_us/parameters/gov/states/in/tax/income/credits/earned_income/static_conformity_in_effect.yaml @@ -1,4 +1,4 @@ -description: Indiana applies its static-conformity-to-Internal-Revenue-Code branch for the Earned Income Tax Credit if this indicator is true. The applicable snapshot is January 1, 2023 for tax years 2023-2025, and January 1, 2026 for tax years 2026 onward per Indiana SEA 243 of 2025. +description: Indiana applies its static-conformity-to-Internal-Revenue-Code branch for the Earned Income Tax Credit if this indicator is true. The branch refers to Section 32 as in effect on January 1, 2023 (IC 6-3.1-21-6(a)), whose amounts are indexed to the taxable year. values: 2010-01-01: false @@ -13,7 +13,7 @@ metadata: href: https://iga.in.gov/laws/2024/ic/titles/6#6-3-1-11 - title: IC 6-3.1-21 - Indiana Earned Income Tax Credit chapter href: https://iga.in.gov/laws/2024/ic/titles/6#6-3.1-21 - - title: Indiana SEA 243 (2025) - Advances IRC conformity to January 1, 2026 - href: https://iga.in.gov/legislative/2025/bills/senate/243 + - title: Indiana SEA 243-2026, SECTION 6 - Moves the IC 6-3-1-11 conformity date to January 1, 2026 (does not amend IC 6-3.1-21) + href: https://iga.in.gov/pdf-documents/124/2026/senate/bills/SB0243/SB0243.05.ENRH.pdf#page=36 - title: 2023 IT-40 Individual Income Tax Booklet (Indiana EITC discussion) href: https://forms.in.gov/Download.aspx?id=15792#page=9 diff --git a/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc.yaml b/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc.yaml index 0e843891d12..3f4116fad8c 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_eitc.yaml @@ -71,7 +71,7 @@ output: in_eitc: 61.20 -- name: Indiana EITC TY 2026 uses the SEA 243 advanced January 1, 2026 IRC snapshot +- name: Indiana EITC TY 2026 uses the current-year federal EITC period: 2026 absolute_error_margin: 0.01 input: @@ -95,16 +95,16 @@ members: [head, child] state_code: IN output: - # TY 2026 onwards Indiana SEA 243 (2025) advances the IRC reference to - # January 1, 2026. All filers take 10% of the current-year federal EITC - # per Schedule IN-EIC Section A; under SEA 243 the current and frozen - # (2026-01-01) computations coincide, so the credit is $442.70. + # SEA 243-2026 moves the IC 6-3-1-11 reference to January 1, 2026; + # IC 6-3.1-21-6(a) keeps its own January 1, 2023 date, whose section 32 + # text indexes the amounts to the taxable year. All filers take 10% of + # the current-year federal EITC per Schedule IN-EIC Section A, so the + # credit is $442.70. in_eitc: 442.70 - name: in_eitc childless 2026 uses the current-year federal EITC - # All filers use the current-year federal EITC (Schedule IN-EIC Section A); - # under SEA 243 the 2026 frozen-IRC snapshot equals the current federal - # childless EITC, so 10% x $612 = $61.20 either way. + # All filers use the current-year federal EITC (Schedule IN-EIC Section A), + # so 10% x $612 = $61.20. absolute_error_margin: 0.01 period: 2026 input: @@ -307,3 +307,40 @@ eitc: 0 in_eitc_eligible: false in_eitc: 0 + +- name: Indiana EITC TY2025 interest exactly at the TY2025 limit + # 26 U.S.C. 32(i)(1) denies the credit only if disqualified income "exceeds" + # the limit, $11,950 for TY2025 (Rev. Proc. 2024-40 sec. 2.06(2)). + # Two children: maximum credit $7,152, phaseout threshold $23,350 + # (Rev. Proc. 2024-40 sec. 2.06(1)), phaseout rate 21.06% (32(b)(1)). + # AGI = 20,000 + 11,950 = 31,950. + # Federal EITC = 7,152 - 21.06% x (31,950 - 23,350) = 7,152 - 1,811.16 = 5,340.84. + # Indiana EITC = 10% x 5,340.84 = 534.08. + period: 2025 + absolute_error_margin: 0.01 + input: + people: + head: + age: 30 + employment_income: 20_000 + taxable_interest_income: 11_950 + child1: + age: 5 + is_tax_unit_dependent: true + child2: + age: 6 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [head, child1, child2] + spm_units: + spm_unit: + members: [head, child1, child2] + households: + household: + members: [head, child1, child2] + state_code: IN + output: + eitc: 5_340.84 + in_eitc_eligible: true + in_eitc: 534.08 diff --git a/policyengine_us/variables/gov/states/in/tax/income/credits/earned_income_credit/in_eitc_eligible.py b/policyengine_us/variables/gov/states/in/tax/income/credits/earned_income_credit/in_eitc_eligible.py index 0a1ef7963a3..8fed2e50226 100644 --- a/policyengine_us/variables/gov/states/in/tax/income/credits/earned_income_credit/in_eitc_eligible.py +++ b/policyengine_us/variables/gov/states/in/tax/income/credits/earned_income_credit/in_eitc_eligible.py @@ -19,8 +19,10 @@ def formula(tax_unit, period, parameters): if p.credits.earned_income.static_conformity_in_effect: # IC 6-3.1-21-6(a) allows the credit to an individual "eligible # for an earned income tax credit under Section 32 of the - # Internal Revenue Code as in effect on January 1, 2023" (IC - # 6-3-1-11; January 1, 2026 from TY2026 per SEA 243 (2025)). + # Internal Revenue Code as in effect on January 1, 2023". That + # date is the chapter's own: SEA 243-2026 moves the general + # IC 6-3-1-11 date to January 1, 2026 but does not amend + # IC 6-3.1-21. # Section 32 as in effect on that date indexes its earned income, # phaseout and investment income amounts to the calendar year in # which the taxable year begins (26 U.S.C. 32(j)(1)), and diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 843ddcbe21c..70e164b0728 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -2183,33 +2183,6 @@ candidates: state: unreviewed note: 'The statute-first rule requires changing the instructions-based scope if the federal-eligibility reading is verified; the 2026 statutory text remains unverified. Code not yet on main: gov/states/in/tax/income/deductions/in_claim_of_right_deduction.yaml.' -- id: us-in:eitc-current-versus-frozen-federal-base - program: income-tax - years: - from: 2023 - type: tax - question: Is Indiana's EITC based on the current federal credit transferred by Schedule IN-EIC or the credit under - its January 1, 2023 conformity date? - sources: - - kind: statute - citation: IC 6-3-1-11; IC 6-3.1-21 - url: null - - kind: form - citation: 2025 Schedule IN-EIC (State Form 49469), Section A, Line A-1 - url: null - readings: - statute: Use the frozen 2023 federal base. - other: Use the current-year federal EITC. - example: A 2025 childless filer aged 30 with $8,000 wages receives $60.00 under the frozen base versus $61.20 - under the current base. - pe_us: - follows: conflicting-source - code: [] - prs: - - https://github.com/PolicyEngine/policyengine-us/pull/8902 - state: unreviewed - note: 'The statute-first rule requires changing the amount base if frozen conformity is verified; eligibility - already uses the frozen snapshot. Code not yet on main: in_eitc, in_eitc_eligible.' - id: us-in:rcap-unlicensed-facility-per-diem program: ssi-state-supplement years: