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/mt-income-tax-rebate-liability-cap.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Cap the Montana 2021 income tax rebate at the taxpayer's pre-credit liability per MCA 15-30-2191(2)(b) and zero the amounts from 2022, fixing the variable's reported value; Montana income tax results are unchanged because the credit application already floored the applied amount.
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,23 +1,98 @@
- name: Single filer
period: 2023
- name: Single filer with liability above the rebate amount
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

- name: Joint filers
period: 2023
- name: Joint filers with liability above the rebate amount
period: 2021
input:
filing_status: JOINT
state_code: MT
people:
person1:
age: 45
employment_income: 60_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:
mt_income_tax_rebate: 2_500

- name: Not in Montana
period: 2023
- name: Rebate is capped at the income tax liability (MCA 15-30-2191(2)(b))
absolute_error_margin: 1
period: 2021
input:
filing_status: JOINT
state_code: AR
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:
# Lesser of $2,500 or the pre-credit liability, not the flat amount.
# (Montana's credit application already floors the applied credit, so
# this fixes the variable's reported value, not the tax outcome.)
mt_income_tax_rebate: 252.40

- 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
period: 2022
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
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,24 @@ class mt_income_tax_rebate(Variable):
reference = "https://archive.legmt.gov/bills/mca/title_0150/chapter_0300/part_0210/section_0910/0150-0300-0210-0910.html"
defined_for = StateCode.MT

# The rebate is based on 2021 income tax liability, but provided in 2023
# The rebate is based on 2021 income tax liability, but provided in 2023.
# MCA 15-30-2191(2)(b): the rebate is the LESSER of the filing-status
# amount or the taxpayer's income tax liability, so it can not drive the
# liability negative. Montana elects the lower of the joint and
# separate-column computations, but that election
# (mt_files_separately) depends on post-credit liability and would
# create a computation cycle here, so cap at the smaller of the two
# pre-credit bases — never larger than the elected one.
def formula(tax_unit, period, parameters):
p = parameters(period).gov.states.mt.tax.income.credits.rebate
filing_status = tax_unit("filing_status", period)
return p.amount[filing_status]
liability_indiv = add(
tax_unit,
period,
["mt_income_tax_before_non_refundable_credits_indiv"],
)
liability_joint = tax_unit(
"mt_income_tax_before_non_refundable_credits_joint", period
)
liability = min_(liability_indiv, liability_joint)
return min_(p.amount[filing_status], max_(liability, 0))
Loading