Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/ny-escc-mixed-age-proration.fixed.md
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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)
Expand All @@ -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
Expand Down
Loading