From 4c2c3a0a1c3a05e4c2656c093f244194edb687c4 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Tue, 27 Oct 2026 14:21:00 -0400 Subject: [PATCH] Prorate NY's 2018-2022 Empire State child credit to children aged 4-16 Form IT-213 Worksheet A computes the pre-TCJA federal credit for every child on form line 4, including children under 4, and form lines 9-12 multiply the result by line 5 (children aged 4-16) / line 4. The formula instead removed the younger children before the federal computation, so the phase-out and the tax limit fell only on the older children. Co-Authored-By: Claude Opus 5.5 --- .../ny-escc-mixed-age-proration.fixed.md | 1 + .../tax/income/credits/ny_ctc_pre_2024.yaml | 139 ++++++++++++++++++ .../tax/income/credits/ctc/ny_ctc_pre_2024.py | 27 ++-- 3 files changed, 157 insertions(+), 10 deletions(-) create mode 100644 changelog.d/ny-escc-mixed-age-proration.fixed.md diff --git a/changelog.d/ny-escc-mixed-age-proration.fixed.md b/changelog.d/ny-escc-mixed-age-proration.fixed.md new file mode 100644 index 00000000000..7e3ec8aeaba --- /dev/null +++ b/changelog.d/ny-escc-mixed-age-proration.fixed.md @@ -0,0 +1 @@ +Prorate the 2018-2022 New York Empire State child credit to the children aged four to 16, as Form IT-213 lines 9-12 do, instead of excluding younger children from the federal credit. diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_ctc_pre_2024.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_ctc_pre_2024.yaml index fc5b0be20ef..7ac587c9883 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_ctc_pre_2024.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_ctc_pre_2024.yaml @@ -98,6 +98,145 @@ ny_ctc: 330 ny_ctc_pre_2024: 330 +# IT-213 (2018-2022): Worksheet A line 1 multiplies every child on form line 4 +# (children who qualify for the federal credit) by $1,000; the phase-out and +# the tax limit apply to that total, and form lines 9-12 then multiply the +# credit by line 5 (children aged at least four but less than 17) / line 4. +- name: 2022 mixed-age children in the phase-out range prorate the credit + period: 2022 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 40 + employment_income: 85_000 + child1: + age: 2 + child2: + age: 10 + tax_units: + tax_unit: + members: [parent, child1, child2] + households: + household: + members: [parent, child1, child2] + state_code: NY + output: + # Head of household: taxable income 85,000 - 19,400 = 65,600; tax + # 1,465 + 4,950 + 22% x 9,700 = 8,549. + income_tax_before_credits: 8_549 + # Worksheet A: line 1 = 2 x 1,000 = 2,000; 85,000 - 75,000 = 10,000; + # 5% = 500; line 6 = 1,500; tax 8,549 does not limit it (line 10 = + # 1,500); Worksheet C gives 0. Form: line 8 = 1,500; line 10 = + # 1,500 / 2 = 750; line 12 = 750 x 1 = 750; line 13 = 33% = 247.50. + # AGI is over 75,000, so no $100 minimum (lines 14-15 skipped). + ny_ctc_pre_2024: 247.5 + +- name: 2022 mixed-age children below the phase-out threshold + period: 2022 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 40 + employment_income: 40_000 + child1: + age: 2 + child2: + age: 10 + tax_units: + tax_unit: + members: [parent, child1, child2] + households: + household: + members: [parent, child1, child2] + state_code: NY + output: + # Taxable income 40,000 - 19,400 = 20,600; tax 1,465 + 12% x 5,950 = 2,179. + income_tax_before_credits: 2_179 + # Worksheet A: line 1 = 2,000; no phase-out; tax 2,179 does not limit + # it; Worksheet C gives 0. Form: line 8 = 2,000; line 10 = 1,000; + # line 12 = 1,000; line 13 = 330; line 15 = 1 x 100; line 16 = 330. + ny_ctc_pre_2024: 330 + +- name: 2022 mixed-age children whose federal tax limits the credit + period: 2022 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 40 + taxable_pension_income: 26_000 + child1: + age: 2 + child2: + age: 10 + tax_units: + tax_unit: + members: [parent, child1, child2] + households: + household: + members: [parent, child1, child2] + state_code: NY + output: + # Taxable income 26,000 - 19,400 = 6,600; tax 10% = 660. + income_tax_before_credits: 660 + # Worksheet A: line 6 = 2,000; line 9 = 660, so line 10 = 660. Worksheet + # C: no earned income, so 0. Form: line 8 = 660; line 10 = 330; + # line 12 = 330; line 13 = 108.90; line 15 = 100; line 16 = 108.90. + ny_ctc_pre_2024: 108.9 + +- name: 2021 mixed-age children of a joint filer in the phase-out range + period: 2021 + absolute_error_margin: 0.01 + input: + people: + parent1: + age: 40 + employment_income: 120_500 + parent2: + age: 40 + child1: + age: 3 + child2: + age: 8 + tax_units: + tax_unit: + members: [parent1, parent2, child1, child2] + households: + household: + members: [parent1, parent2, child1, child2] + state_code: NY + output: + # Taxable income 120,500 - 25,100 = 95,400; tax 1,990 + 7,338 + + # 22% x 14,350 = 12,485. + income_tax_before_credits: 12_485 + # Worksheet A: line 1 = 2,000; 120,500 - 110,000 = 10,500, increased to + # 11,000; 5% = 550; line 6 = 1,450; tax does not limit it. Form: + # line 8 = 1,450; line 10 = 725; line 12 = 725; line 13 = 239.25. + ny_ctc_pre_2024: 239.25 + +- name: 2022 children who are all under four get no credit + period: 2022 + input: + people: + parent: + age: 40 + employment_income: 40_000 + child: + age: 2 + tax_units: + tax_unit: + members: [parent, child] + households: + household: + members: [parent, child] + state_code: NY + output: + # Form line 5 is 0, so the filer does not qualify. + ny_ctc_pre_2024_eligible: false + ny_ctc_pre_2024: 0 + - name: 2020 Empire State child credit recomputes the federal credit with line 19a period: 2020 absolute_error_margin: 0.01 diff --git a/policyengine_us/variables/gov/states/ny/tax/income/credits/ctc/ny_ctc_pre_2024.py b/policyengine_us/variables/gov/states/ny/tax/income/credits/ctc/ny_ctc_pre_2024.py index b032548edef..19be59b42d1 100644 --- a/policyengine_us/variables/gov/states/ny/tax/income/credits/ctc/ny_ctc_pre_2024.py +++ b/policyengine_us/variables/gov/states/ny/tax/income/credits/ctc/ny_ctc_pre_2024.py @@ -21,6 +21,9 @@ class ny_ctc_pre_2024(Variable): "https://www.nysenate.gov/legislation/laws/TAX/606", # (c-1) # 2020 IT-213 instructions: the credit uses recomputed federal AGI. "https://www.tax.ny.gov/pdf/2020/inc/it213i_2020.pdf#page=2", + # 2022 IT-213, lines 9-12: prorate the federal credit to the + # children aged at least four. + "https://www.tax.ny.gov/pdf/2022/inc/it213_2022_fill_in.pdf#page=2", ) defined_for = "ny_ctc_pre_2024_eligible" @@ -56,15 +59,9 @@ def formula(tax_unit, period, parameters): name in variable for name in CREDIT_DEPENDENT_VARIABLES ): pre_tcja_ctc.delete_arrays(variable) - # Calculate pre-TCJA CTC. - maximum_ctc = pre_tcja_ctc.calculate("ctc_child_individual_maximum", period) - meets_ny_minimum_age = age >= p.minimum_age - pre_tcja_ctc.set_input( - "ctc_individual_maximum", - period, - maximum_ctc * meets_ny_minimum_age, - ) - # Get maximum federal CTC from pre-TCJA rules + # Calculate pre-TCJA CTC. IT-213 Worksheet A, line 1 counts every + # child on form line 4, including children under the NY minimum + # age; lines 9-12 below prorate the result. max_federal_ctc = pre_tcja_ctc.tax_unit("ctc", period) # Limit by actual tax liability (for non-refundable portion) @@ -85,7 +82,17 @@ def formula(tax_unit, period, parameters): # Remaining logic is based on NY parameters. qualifies = qualifies_for_federal_ctc & (age >= p.minimum_age) qualifying_children = tax_unit.sum(qualifies) - federal_match = federal_ctc * p.amount.percent + # IT-213 lines 9-12: divide the federal credit by the number of + # children who qualify for it (line 4) and multiply by the number of + # those children who meet the NY minimum age (line 5). + federal_children = tax_unit.sum(qualifies_for_federal_ctc) + share = np.divide( + qualifying_children, + federal_children, + out=np.zeros_like(federal_ctc), + where=federal_children > 0, + ) + federal_match = federal_ctc * share * p.amount.percent # Filers with income below the CTC phase-out threshold receive a # minimum amount per child. minimum = p.amount.minimum * qualifying_children