diff --git a/changelog.d/il-rebate-negative-agi.fixed.md b/changelog.d/il-rebate-negative-agi.fixed.md new file mode 100644 index 00000000000..9b7e157bae2 --- /dev/null +++ b/changelog.d/il-rebate-negative-agi.fixed.md @@ -0,0 +1 @@ +Give the Illinois 2021 income tax rebate base amount to filers with negative federal AGI. diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/tax/income/credits/il_income_tax_rebate.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/tax/income/credits/il_income_tax_rebate.yaml index 6b08090b74c..f91a886d3c9 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/tax/income/credits/il_income_tax_rebate.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/tax/income/credits/il_income_tax_rebate.yaml @@ -47,3 +47,33 @@ tax_unit_dependents: 0 output: il_income_tax_rebate: 50 + +- name: Single with negative AGI gets the base rebate + period: 2021 + input: + adjusted_gross_income: -2_000 + filing_status: SINGLE + state_code: IL + tax_unit_dependents: 0 + output: + il_income_tax_rebate: 50 + +- name: Single with negative AGI and one dependent + period: 2021 + input: + adjusted_gross_income: -2_000 + filing_status: SINGLE + state_code: IL + tax_unit_dependents: 1 + output: + il_income_tax_rebate: 150 + +- name: Joint with negative AGI and two dependents + period: 2021 + input: + adjusted_gross_income: -500_000 + tax_unit_is_joint: true + state_code: IL + tax_unit_dependents: 2 + output: + il_income_tax_rebate: 300 diff --git a/policyengine_us/variables/gov/states/il/tax/income/credits/il_income_tax_rebate.py b/policyengine_us/variables/gov/states/il/tax/income/credits/il_income_tax_rebate.py index e9e64f565fa..3b30f6639ec 100644 --- a/policyengine_us/variables/gov/states/il/tax/income/credits/il_income_tax_rebate.py +++ b/policyengine_us/variables/gov/states/il/tax/income/credits/il_income_tax_rebate.py @@ -13,11 +13,14 @@ class il_income_tax_rebate(Variable): def formula(tax_unit, period, parameters): p = parameters(period).gov.states.il.tax.income.credits.income_tax_rebate federal_agi = tax_unit("adjusted_gross_income", period) + # Section 212.1(a) sets only an upper AGI limit, so a negative AGI + # receives the full base amount; the scales start at zero. + scale_agi = max_(federal_agi, 0) joint = tax_unit("tax_unit_is_joint", period) base_amount = where( joint, - p.amount.joint.calc(federal_agi), - p.amount.other.calc(federal_agi), + p.amount.joint.calc(scale_agi), + p.amount.other.calc(scale_agi), ) dependent_count = tax_unit("tax_unit_dependents", period) capped_dependents = min_(dependent_count, p.max_dependents)