diff --git a/changelog.d/mn-cwfc-older-child-age.fixed.md b/changelog.d/mn-cwfc-older-child-age.fixed.md new file mode 100644 index 00000000000..655163cf091 --- /dev/null +++ b/changelog.d/mn-cwfc-older-child-age.fixed.md @@ -0,0 +1 @@ +Count 18-year-old qualifying children, students or not, as qualifying older children for the Minnesota working family credit. diff --git a/policyengine_us/parameters/gov/states/mn/tax/income/credits/cwfc/wfc/additional/age_threshold.yaml b/policyengine_us/parameters/gov/states/mn/tax/income/credits/cwfc/wfc/additional/age_threshold.yaml index 661c1b10c0a..05a7921b569 100644 --- a/policyengine_us/parameters/gov/states/mn/tax/income/credits/cwfc/wfc/additional/age_threshold.yaml +++ b/policyengine_us/parameters/gov/states/mn/tax/income/credits/cwfc/wfc/additional/age_threshold.yaml @@ -1,4 +1,4 @@ -description: Minnesota provides an additional working family credit amount for each qualifying child over this age threshold. +description: Minnesota provides an additional working family credit amount for each qualifying child who has attained at least this age. values: 2023-01-01: 18 metadata: @@ -7,10 +7,14 @@ metadata: href: https://www.revenue.state.mn.us/sites/default/files/2025-01/m1cwfc-24.pdf#page=2 - title: 2023 Schedule M1CWFC, Minnesota Child and Working Family Credits href: https://www.revenue.state.mn.us/sites/default/files/2025-01/m1cwfc-23.pdf#page=2 + - title: 2023 Schedule M1DQC, Dependents and Qualifying Children + href: https://www.revenue.state.mn.us/sites/default/files/2024-01/m1dqc-23.pdf#page=3 + - title: 2024 Schedule M1DQC, Dependents and Qualifying Children + href: https://www.revenue.state.mn.us/sites/default/files/2024-12/m1dqc-24.pdf#page=3 - title: 2025 Schedule M1DQC, Dependents and Qualifying Children href: https://www.revenue.state.mn.us/sites/default/files/2026-01/m1dqc-25.pdf#page=3 - - title: 290.0671 MINNESOTA WORKING FAMILY CREDIT. Subd. 1 (3) - href: https://www.revisor.mn.gov/statutes/cite/290.0671 + - title: 290.0671 MINNESOTA WORKING FAMILY CREDIT. Subd. 1a + href: https://www.revisor.mn.gov/statutes/cite/290.0671#stat.290.0671.1a unit: year period: year - label: Minnesota working family credit additional amount age threshold + label: Minnesota working family credit qualifying older child minimum age diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits.yaml index 3ac3036fd85..c07761ed5b0 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits.yaml @@ -490,6 +490,157 @@ # WFC base only: min($10,000, $9,480) * 0.04 = $379.20, no older-child bonus. mn_child_and_working_families_credits: 379.2 +# Minn. Stat. 290.0671, subd. 1a: a qualifying older child is an IRC 32(c) +# qualifying child that "attained at least the age of 18". Schedule M1DQC +# (2023-2025, page 3) step 4 sends a child who is not under 18 at the end of +# the year to steps 5-8; step 7 checks row 11 for a full-time student and +# step 8 checks row 11 for a child under 19, so every 18-year-old qualifying +# child is a qualifying older child. The next four cases share one 2025 +# household: a head of household with $10,000 of wages and one dependent. +- name: 2025 an 18-year-old full-time student is a qualifying older child + period: 2025 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 40 + employment_income: 10_000 + child: + age: 18 + is_tax_unit_dependent: true + is_full_time_student: true + tax_units: + tax_unit: + members: [parent, child] + households: + household: + members: [parent, child] + state_code: MN + output: + # WFC base: 4% of the first $9,480 of earned income = $379.20. + # One qualifying older child (M1DQC step 7): + $1,000. + # No CTC (not under 18); AGI $10,000 is below the $31,950 threshold. + mn_child_and_working_families_credits: 379.2 + 1_000 + +- name: 2025 an 18-year-old who is not a student is a qualifying older child + period: 2025 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 40 + employment_income: 10_000 + child: + age: 18 + is_tax_unit_dependent: true + is_full_time_student: false + tax_units: + tax_unit: + members: [parent, child] + households: + household: + members: [parent, child] + state_code: MN + output: + # Under 19 at the end of the year (M1DQC step 8, IRC 152(c)(3)(A)), so + # the same $379.20 + $1,000 as the full-time student above. + mn_child_and_working_families_credits: 379.2 + 1_000 + +- name: 2025 a 17-year-old gets the child tax credit and no older-child amount + period: 2025 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 40 + employment_income: 10_000 + child: + age: 17 + is_tax_unit_dependent: true + is_full_time_student: false + tax_units: + tax_unit: + members: [parent, child] + households: + household: + members: [parent, child] + state_code: MN + output: + # Under 18 at the end of the year (M1DQC step 4, row 10): CTC $1,750 + # plus the $379.20 WFC base, no qualifying older child amount. + mn_child_and_working_families_credits: 379.2 + 1_750 + +- name: 2025 a 19-year-old who is not a student is not a qualifying older child + period: 2025 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 40 + employment_income: 10_000 + child: + age: 19 + is_tax_unit_dependent: true + is_full_time_student: false + tax_units: + tax_unit: + members: [parent, child] + households: + household: + members: [parent, child] + state_code: MN + output: + # Not a student and not under 19 (M1DQC step 8): WFC base $379.20 only. + mn_child_and_working_families_credits: 379.2 + +- name: 2025 a disabled 18-year-old is a qualifying older child + period: 2025 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 40 + employment_income: 10_000 + child: + age: 18 + is_tax_unit_dependent: true + is_full_time_student: false + is_permanently_and_totally_disabled: true + tax_units: + tax_unit: + members: [parent, child] + households: + household: + members: [parent, child] + state_code: MN + output: + # Disabled and not under 18 (M1DQC step 4 sends the child to row 11). + mn_child_and_working_families_credits: 379.2 + 1_000 + +- name: 2025 an 18-year-old older child above the phase-out start + period: 2025 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 40 + employment_income: 40_000 + child: + age: 18 + is_tax_unit_dependent: true + is_full_time_student: false + tax_units: + tax_unit: + members: [parent, child] + households: + household: + members: [parent, child] + state_code: MN + output: + # $379.20 + $1,000, less 9% of the income above the $31,950 phase-out + # start (2025 Schedule M1CWFC): 1,379.20 - 0.09 x 8,050 = 654.70. + mn_child_and_working_families_credits: 654.7 + # Minnesota decouples from IRC 32(m) (Minn. Stat. 290.0661/290.0671), so an # ITIN child (ssn_card_type OTHER_NON_CITIZEN, no SSN valid for employment) # receives the same MN CTC as a citizen child. This mirrors the "2025 Joint diff --git a/policyengine_us/variables/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits.py b/policyengine_us/variables/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits.py index d694b84191a..1e84c8ce54c 100644 --- a/policyengine_us/variables/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits.py +++ b/policyengine_us/variables/gov/states/mn/tax/income/credits/mn_child_and_working_families_credits.py @@ -37,23 +37,17 @@ def formula(tax_unit, period, parameters): base_wfc_credit = p.wfc.phase_in.calc(earnings) person = tax_unit.members # Minn. Stat. 290.0671, subd. 1a defines a qualifying older child as - # an IRC 32(c) qualifying child that attained at least age 18; the - # IRC 32(c)(3) definition incorporates IRC 152(c)(3)(B), which waives - # the age (and student) test for permanently and totally disabled - # individuals, and the IRC 152(c)(2) relationship test. Schedule M1DQC - # step 4 routes a disabled dependent aged 18 or older directly to the - # qualifying-older-child row (row 11) without the full-time-student - # test. - is_disabled_dependent = person("is_tax_unit_dependent", period) & person( - "is_permanently_and_totally_disabled", period - ) + # an IRC 32(c) qualifying child that attained at least age 18. IRC + # 32(c)(3) uses the IRC 152(c)(3) age test (under 19, under 24 if a + # full-time student, or any age if permanently and totally disabled) + # and the IRC 152(c)(2) relationship test. Schedule M1DQC steps 4-8 + # follow it: an 18-year-old qualifies whether or not a student, a 19- + # to 23-year-old only as a full-time student, and a disabled child + # aged 18 or older always. qualifying_child = person("is_eitc_qualifying_child", period) age = person("age", period) - full_time_student = person("is_full_time_student", period) - qualifying_older_child = ( - qualifying_child - & (age > p.wfc.additional.age_threshold) - & (full_time_student | is_disabled_dependent) + qualifying_older_child = qualifying_child & ( + age >= p.wfc.additional.age_threshold ) qualifying_older_children = tax_unit.sum(qualifying_older_child) additional_wfc_credit = p.wfc.additional.amount.calc(qualifying_older_children)