Skip to content

Apply MT 2021 income tax rebate once per return, not per spouse (#9012)#9019

Open
PavelMakarchuk wants to merge 1 commit into
mainfrom
mt-rebate-double-count-9012
Open

Apply MT 2021 income tax rebate once per return, not per spouse (#9012)#9019
PavelMakarchuk wants to merge 1 commit into
mainfrom
mt-rebate-double-count-9012

Conversation

@PavelMakarchuk

Copy link
Copy Markdown
Collaborator

Fixes #9012.

Problem

mt_non_refundable_credits is a Person-entity variable with adds = gov.states.mt.tax.income.credits.non_refundable; the 2021 list includes mt_income_tax_rebate, a TaxUnit-entity variable ($2,500 joint). The tax-unit value was projected onto every member, so a joint couple received 2 × $2,500 = $5,000 of credit — wiping liabilities up to $5,000 instead of $2,500, and even flipping the mt_files_separately election (the doubled credit zeroed the joint path first).

Per MCA 15-30-2191(1), the rebate is the lesser of the taxpayer's 2021 line-20 liability or, for a joint return, $2,500 — applied once per return.

Fix

Made mt_income_tax_rebate a Person-entity variable that splits the per-return cap across each spouse's column: joint filers get $1,250 per spouse (using the existing SEPARATE rebate amount), so the pooled person-level non-refundable credits sum to the $2,500 cap once. Single/HoH/surviving-spouse filers are unchanged. This also gives the separate-on-same-form path the correct $1,250 per-column rebate.

Tests

  • Unit: mt_income_tax_rebate.yaml now verifies the joint per-return cap splits to [1_250, 1_250] (sums to $2,500, not $5,000).
  • Integration: added a 2021 joint couple where the rebate reduces mt_income_tax by exactly $2,500 (not $5,000). Moved the three 2021 taxsim tests' mt_income_tax_rebate: 0 overrides from the tax-unit to the person level to match the variable's new entity.
  • Full MT suite (535 tests) passes.

Independent of #9011 (MT taxable Social Security); filed separately so the two can land independently.

🤖 Generated with Claude Code

mt_non_refundable_credits is a Person-entity variable whose adds list
included mt_income_tax_rebate, a TaxUnit-entity variable ($2,500 joint).
The tax-unit value was projected onto every member, so a joint couple
received 2 x $2,500 = $5,000 of credit, wiping liabilities up to $5,000
instead of $2,500 and even distorting the mt_files_separately election.
Made mt_income_tax_rebate a Person-entity variable that splits the joint
per-return cap into $1,250 per spouse's column, so the pooled person-level
credits sum to the $2,500 cap once.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@codecov

codecov Bot commented Jul 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (ff39625) to head (7353668).
⚠️ Report is 12 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #9019   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            1         1           
  Lines           18        16    -2     
=========================================
- Hits            18        16    -2     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@PavelMakarchuk PavelMakarchuk marked this pull request as ready for review July 13, 2026 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Montana 2021 income tax rebate is double-counted: person-entity mt_non_refundable_credits adds the tax-unit rebate to each spouse

1 participant