Skip to content
Open
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/fix-mt-rebate-wiring.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Scope the Montana 2021 income tax rebate to its eligibility year, removing the phantom rebate credit that applied in 2022 and later.
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,16 @@ metadata:

SINGLE:
2021-01-01: 1_250
2022-01-01: 0
HEAD_OF_HOUSEHOLD:
2021-01-01: 1_250
2022-01-01: 0
JOINT:
2021-01-01: 2_500
2022-01-01: 0
SURVIVING_SPOUSE:
2021-01-01: 2_500
2022-01-01: 0
SEPARATE:
2021-01-01: 1_250
2021-01-01: 1_250
2022-01-01: 0
Original file line number Diff line number Diff line change
@@ -1,35 +1,134 @@
# The rebate is keyed to the 2021 tax year (MCA 15-30-2191(1)); it was paid out
# in 2023 but is booked in the eligibility year. All active-year cases therefore
# run at period 2021. Cases at 2022 and 2023 guard the year-scoping added by
# amount.yaml's `2022-01-01: 0` entries: without them, backdating fills the 2021
# amounts forward and every Montana filer receives a phantom rebate credit.

- name: Single filer receives the full single rebate
period: 2023
period: 2021
input:
filing_status: SINGLE
state_code: MT
people:
person1:
age: 45
employment_income: 50_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: MT
output:
mt_income_tax_rebate: 1_250
mt_income_tax_rebate: [1_250]

- name: Joint filers split the per-return rebate across each spouse's column
period: 2023
period: 2021
absolute_error_margin: 0.01
input:
people:
person1:
is_tax_unit_head: true
age: 45
employment_income: 60_000
person2:
is_tax_unit_spouse: true
age: 45
marital_units:
marital_unit:
members: [person1, person2]
tax_units:
tax_unit:
members: [person1, person2]
filing_status: JOINT
households:
household:
members: [person1, person2]
state_code: MT
output:
# $2,500 per-return cap split $1,250 per spouse (sums to $2,500, not $5,000)
mt_income_tax_rebate: [1_250, 1_250]
# End to end: 2,518.22 pre-credit - 2,500 pooled rebate = 18.22
mt_income_tax: 18.22

- name: Rebate cannot drive liability below zero (MCA 15-30-2191(2))
period: 2021
absolute_error_margin: 0.01
input:
people:
person1:
age: 45
employment_income: 20_000
person2:
age: 45
marital_units:
marital_unit:
members: [person1, person2]
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: MT
output:
# The statutory "lesser of the amount or the liability" cap is enforced by
# the ordered credit application, not by the rebate variable: the full
# $2,500 is reported, but the joint path floors at zero, so a household
# whose pre-credit liability is only $252.40 keeps $252.40 of benefit and
# no more. (mt_income_tax itself goes to -33.81 here from the refundable
# Montana EITC, which is unrelated to the rebate.)
mt_income_tax_rebate: [1_250, 1_250]
mt_income_tax_before_non_refundable_credits_joint: 252.40
mt_income_tax_before_refundable_credits_joint: 0

- name: Not in Montana
- name: No rebate outside Montana
period: 2021
input:
people:
person1:
age: 45
employment_income: 50_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: AR
output:
mt_income_tax_rebate: [0]

- name: No rebate in 2022, and no phantom credit against 2022 tax
period: 2022
absolute_error_margin: 0.01
input:
people:
person1:
age: 45
employment_income: 50_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: MT
output:
mt_income_tax_rebate: [0]
mt_non_refundable_credits: [0]
# Without the 2022 zeroing the leaked $1,250 would cut this to 996.00
mt_income_tax: 2_246.00

- name: No rebate in 2023, the year the rebate was actually paid out
period: 2023
input:
filing_status: JOINT
state_code: AR
people:
person1:
age: 45
employment_income: 50_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: MT
output:
mt_income_tax_rebate: 0
mt_income_tax_rebate: [0]
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,17 @@ class mt_income_tax_rebate(Variable):
# It applies once per return (MCA 15-30-2191(1)), so joint filers split
# the per-return cap across each spouse's column ($1,250 each) to avoid
# double-counting when the person-level non-refundable credits are pooled.
#
# MCA 15-30-2191(2) caps the rebate at the lesser of the filing-status
# amount or the 2021 income tax liability reported on line 20 of Form 2
# (tax after non-refundable credits). That cap is NOT applied here: the
# ordered non-refundable credit application already floors each path at
# zero, so the effective rebate is line-20-capped per filing
# configuration in both the indiv and joint paths. Capping this
# person-level amount against each spouse's own column would instead
# under-pay a one-earner couple electing the joint column, which the
# statute and the DOR rebate report (May 2024, pp. 6, 10-11) grant
# min($2,500, joint line 20).
def formula(person, period, parameters):
p = parameters(period).gov.states.mt.tax.income.credits.rebate
filing_status = person.tax_unit("filing_status", period)
Expand Down
Loading