diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..e48c888cf44 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,6 @@ +- bump: patch + changes: + fixes: + - Accurately reflect non-refundable state credit matches if federal credit amounts exceed taxes. + - Maine child care credit calculation. + - Kansas CDCC calculation. diff --git a/policyengine_us/parameters/gov/territories/pr/tax/income/gross_income/sources.yaml b/policyengine_us/parameters/gov/territories/pr/tax/income/gross_income/sources.yaml index a1aa5985149..7253a516ee1 100644 --- a/policyengine_us/parameters/gov/territories/pr/tax/income/gross_income/sources.yaml +++ b/policyengine_us/parameters/gov/territories/pr/tax/income/gross_income/sources.yaml @@ -41,4 +41,4 @@ metadata: - title: P.R. Laws tit. 13, ยง 30101 href: https://law.justia.com/codes/puerto-rico/title-thirteen/subtitle-17/part-ii/chapter-1005/subchapter-a/30101/ - title: P.R. Individual Income Tax Return, Form 482 - href: https://hacienda.pr.gov/sites/default/files/individuals_2024_rev._jul_12_24_9-30-24_informative.pdf#page=2 \ No newline at end of file + href: https://hacienda.pr.gov/sites/default/files/individuals_2024_rev._jul_12_24_9-30-24_informative.pdf#page=2 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_cdcc.yaml b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_cdcc.yaml index a84e622894b..c1d430a6c3e 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_cdcc.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_cdcc.yaml @@ -3,5 +3,44 @@ input: cdcc: 1_000 state_code: KS + income_tax_before_credits: 2_000 output: ks_cdcc: 0.25 * 1_000 + +- name: Taxsim integration test + absolute_error_margin: 2 + period: 2023 + input: + people: + person1: + age: 40 + employment_income: 20000 + ssi: 0 + wic: 0 + deductible_mortgage_interest: 0 + person2: + age: 4 + employment_income: 0 + ssi: 0 + wic: 0 + deductible_mortgage_interest: 0 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_childcare_expenses: 2_000 + premium_tax_credit: 0 + local_income_tax: 0 + state_sales_tax: 0 + spm_units: + spm_unit: + members: [person1, person2] + snap: 0 + tanf: 0 + households: + household: + members: [person1, person2] + state_fips: 20 + output: + income_tax_before_credits: 0 + ks_cdcc: 0 + ks_income_tax: -455 diff --git a/policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/child_care_credit.yaml b/policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/me_child_care_credit.yaml similarity index 68% rename from policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/child_care_credit.yaml rename to policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/me_child_care_credit.yaml index 63cdec676dd..41677f8b42f 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/child_care_credit.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/me_child_care_credit.yaml @@ -57,3 +57,40 @@ me_child_care_credit: 750 me_refundable_child_care_credit: 500 me_non_refundable_child_care_credit: 250 + +- name: Taxsim integration test + absolute_error_margin: 2 + period: 2023 + input: + people: + person1: + age: 40 + employment_income: 20_002 + ssi: 0 + wic: 0 + deductible_mortgage_interest: 0 + person2: + age: 4 + employment_income: 1 + ssi: 0 + wic: 0 + deductible_mortgage_interest: 0 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_childcare_expenses: 0 + premium_tax_credit: 0 + local_income_tax: 0 + state_sales_tax: 0 + spm_units: + spm_unit: + members: [person1, person2] + snap: 0 + tanf: 0 + households: + household: + members: [person1, person2] + state_fips: 23 + output: + me_child_care_credit: 0 + me_income_tax: -1_199 diff --git a/policyengine_us/variables/gov/states/ks/tax/income/credits/ks_cdcc.py b/policyengine_us/variables/gov/states/ks/tax/income/credits/ks_cdcc.py index 0091fdc10bc..3ce7fb40369 100644 --- a/policyengine_us/variables/gov/states/ks/tax/income/credits/ks_cdcc.py +++ b/policyengine_us/variables/gov/states/ks/tax/income/credits/ks_cdcc.py @@ -15,4 +15,12 @@ class ks_cdcc(Variable): def formula(tax_unit, period, parameters): p = parameters(period).gov.states.ks.tax.income.credits - return p.cdcc_fraction * tax_unit("cdcc", period) + # The credit match is limited to the amount of CDCC claimed + # we will represent this by capping the CDCC at federal income tax + # before non-refundable credits + cdcc = tax_unit("cdcc", period) + income_tax_before_credits = tax_unit( + "income_tax_before_credits", period + ) + capped_cdcc = min_(cdcc, income_tax_before_credits) + return p.cdcc_fraction * capped_cdcc diff --git a/policyengine_us/variables/gov/states/me/tax/income/credits/child_care_credit/me_child_care_credit.py b/policyengine_us/variables/gov/states/me/tax/income/credits/child_care_credit/me_child_care_credit.py index 9323c94d95d..9407a7853cf 100644 --- a/policyengine_us/variables/gov/states/me/tax/income/credits/child_care_credit/me_child_care_credit.py +++ b/policyengine_us/variables/gov/states/me/tax/income/credits/child_care_credit/me_child_care_credit.py @@ -22,10 +22,14 @@ def formula(tax_unit, period, parameters): ) # Line 2: Divide Federal CDCC according to share of regular vs. Step 4 expenses cdcc = tax_unit("cdcc", period) + income_tax_before_credits = tax_unit( + "income_tax_before_credits", period + ) + capped_cdcc = min_(cdcc, income_tax_before_credits) # Line 2a: Column A - cdcc_regular_portion = cdcc * (1 - step_4_share_of_expenses) + cdcc_regular_portion = capped_cdcc * (1 - step_4_share_of_expenses) # Line 2a, Column B - cdcc_step_4_portion = cdcc * step_4_share_of_expenses + cdcc_step_4_portion = capped_cdcc * step_4_share_of_expenses # Line 3, Column A regular_child_care_credit = ( p.share_of_federal_credit.non_step_4 * cdcc_regular_portion