diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/additions_subtractions/mi_additions.py b/fiscalsim_us/variables/gov/states/mi/tax/income/additions_subtractions/mi_additions.py new file mode 100644 index 000000000..94168eeb4 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/additions_subtractions/mi_additions.py @@ -0,0 +1,16 @@ +from fiscalsim_us.model_api import * + + +class mi_additions(Variable): + """ + Line 11 on Michigan 2022 Individual Income Tax return form MI-1040. + These additions to income include the categories that are listed + in Michigan Line 9 of Schedule 1 found in the instructions + """ + + value_type = float + entity = TaxUnit + label = "MI additions to income" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/additions_subtractions/mi_subtractions.py b/fiscalsim_us/variables/gov/states/mi/tax/income/additions_subtractions/mi_subtractions.py new file mode 100644 index 000000000..b1eba9aea --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/additions_subtractions/mi_subtractions.py @@ -0,0 +1,16 @@ +from fiscalsim_us.model_api import * + + +class mi_subtractions(Variable): + """ + Line 13 on Michigan 2022 Individual Income Tax return form MI-1040. + These subtractions to income include the categories that are listed + in Michigan Line 30 of Schedule 1 found in the instructions + """ + + value_type = float + entity = TaxUnit + label = "MI subtractions to income" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_historic_preservation_amount.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_historic_preservation_amount.py new file mode 100644 index 000000000..3b6b548e0 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_historic_preservation_amount.py @@ -0,0 +1,16 @@ +from fiscalsim_us.model_api import * + + +class mi_historic_preservation_amount(Variable): + """ + Line 19a on Michigan 2022 Individual Income Tax return form MI-1040. + If you are including Form 3581, enter the amount + from line 9. If you are including Form 5803, enter the amount from line 7. + """ + + value_type = float + entity = TaxUnit + label = "MI amount of Historic Preservation Tax Credit" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_historic_preservation_credit.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_historic_preservation_credit.py new file mode 100644 index 000000000..3c317a05b --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_historic_preservation_credit.py @@ -0,0 +1,16 @@ +from fiscalsim_us.model_api import * + + +class mi_historic_preservation_credit(Variable): + """ + Line 19b on Michigan 2022 Individual Income Tax return form MI-1040. + If you are including Form 3581, enter the amount + from line 14. If you are including Form 5803, enter the amount from line 12. + """ + + value_type = float + entity = TaxUnit + label = "MI Credit of Historic Preservation Tax Credit" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_income_tax.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_income_tax.py new file mode 100644 index 000000000..6f6ca2760 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_income_tax.py @@ -0,0 +1,21 @@ +from fiscalsim_us.model_api import * + + +class mi_income_tax(Variable): + """ + Line 20 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MI income tax" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI + + def formula(tax_unit, period, parameters): + imposed = tax_unit("mi_income_tax_imposed_by_other_gov_credit") + historic = tax_unit("mi_historic_preservation_amount") + tax = tax_unit("mi_income_tax_before_credits") + credit = imposed + historic + return max(0, credit - tax) diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_income_tax_imposed_by_other_gov.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_income_tax_imposed_by_other_gov.py new file mode 100644 index 000000000..8a304412d --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_income_tax_imposed_by_other_gov.py @@ -0,0 +1,22 @@ +from fiscalsim_us.model_api import * + + +class mi_income_tax_imposed_by_other_gov_amount(Variable): + """ + Line 18a on Michigan 2022 Individual Income Tax return form MI-1040. + This non-refundable credit includes the amount of income tax paid to: + - A nonreciprocal state + - A local government unit outside Michigan, including tax + paid to local units located in reciprocal states + - The District of Columbia + -A Canadian province. + """ + + value_type = float + entity = TaxUnit + label = ( + "MI income tax amount imposed by goverment units outside of michigan" + ) + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_income_tax_imposed_by_other_gov_credit.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_income_tax_imposed_by_other_gov_credit.py new file mode 100644 index 000000000..49a84f949 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_income_tax_imposed_by_other_gov_credit.py @@ -0,0 +1,16 @@ +from fiscalsim_us.model_api import * + + +class mi_income_tax_imposed_by_other_gov_credit(Variable): + """ + Line 18b on Michigan 2022 Individual Income Tax return form MI-1040. + """ + + value_type = float + entity = TaxUnit + label = ( + "MI income tax credit imposed by goverment units outside of michigan" + ) + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_total_tax_liability.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_total_tax_liability.py new file mode 100644 index 000000000..e2602f909 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_total_tax_liability.py @@ -0,0 +1,16 @@ +from fiscalsim_us.model_api import * + + +class mi_total_tax_liability(Variable): + """ + Line 24 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MT total tax liability" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI + + adds = ["mi_income_tax", "mi_voluntary_contributions", "mi_use_tax"] diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/mi_taxable_income.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_use_tax.py similarity index 55% rename from fiscalsim_us/variables/gov/states/mi/tax/income/mi_taxable_income.py rename to fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_use_tax.py index c13547919..9916f52a2 100644 --- a/fiscalsim_us/variables/gov/states/mi/tax/income/mi_taxable_income.py +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_use_tax.py @@ -1,10 +1,14 @@ from fiscalsim_us.model_api import * -class mi_taxable_income(Variable): +class mi_use_tax(Variable): + """ + Line 23 on Michigan individual income tax form MI-1040 + """ + value_type = float entity = TaxUnit - label = "Michigan taxable income" - defined_for = StateCode.MI + label = "MI use tax" unit = USD definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_voluntary_contributions.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_voluntary_contributions.py new file mode 100644 index 000000000..4ba6a9a99 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/non_refundable_credits/mi_voluntary_contributions.py @@ -0,0 +1,14 @@ +from fiscalsim_us.model_api import * + + +class mi_voluntary_contributions(Variable): + """ + Line 22 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MI volentary contributions" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/mi_eitc.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_eitc.py similarity index 100% rename from fiscalsim_us/variables/gov/states/mi/tax/income/credits/mi_eitc.py rename to fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_eitc.py diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_electing_flow_through_credit.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_electing_flow_through_credit.py new file mode 100644 index 000000000..7ad833914 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_electing_flow_through_credit.py @@ -0,0 +1,14 @@ +from fiscalsim_us.model_api import * + + +class mi_electing_flow_through_credit(Variable): + """ + Line 29 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MI allocated share of tax paid by an electing flow-through entity credit" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_estimated_tax.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_estimated_tax.py new file mode 100644 index 000000000..77a7d241e --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_estimated_tax.py @@ -0,0 +1,14 @@ +from fiscalsim_us.model_api import * + + +class mi_estimated_tax(Variable): + """ + Line 31 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MI Estimated Tax, Extension Payments, and Credit Forward" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_farmland_preservation_tax_credit.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_farmland_preservation_tax_credit.py new file mode 100644 index 000000000..8728a92eb --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_farmland_preservation_tax_credit.py @@ -0,0 +1,14 @@ +from fiscalsim_us.model_api import * + + +class mi_farmland_preservation_tax_credit(Variable): + """ + Line 26 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MI Farmland Preservation Tax Credit" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_historic_preservation_refundable.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_historic_preservation_refundable.py new file mode 100644 index 000000000..180e4c3c9 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_historic_preservation_refundable.py @@ -0,0 +1,14 @@ +from fiscalsim_us.model_api import * + + +class mi_historic_preservation_refundable(Variable): + """ + Line 28 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MI Historic Preservation Tax Credit Refundable" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_property_tax_credit.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_property_tax_credit.py new file mode 100644 index 000000000..0e5636671 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_property_tax_credit.py @@ -0,0 +1,14 @@ +from fiscalsim_us.model_api import * + + +class mi_property_tax_credit(Variable): + """ + Line 25 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MI Property Tax Credit" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_total_refunable_credits.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_total_refunable_credits.py new file mode 100644 index 000000000..e7f9f15e7 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_total_refunable_credits.py @@ -0,0 +1,24 @@ +from fiscalsim_us.model_api import * + + +class mi_total_refundable_credits(Variable): + """ + Line 33 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MT total refundable credits" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI + + adds = [ + "mi_property_tax_credit", + "mi_farmland_preservation_tax_credit", + "mi_eitc", + "mi_historic_preservation_refundable", + "mi_electing_flow_through_credit", + "mi_withheld", + "mi_estimated_tax", + ] diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_withheld.py b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_withheld.py new file mode 100644 index 000000000..27e669902 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/credits/refundable_credits/mi_withheld.py @@ -0,0 +1,14 @@ +from fiscalsim_us.model_api import * + + +class mi_withheld(Variable): + """ + Line 30 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MI tax withheld" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_income_subject_to_tax.py b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_income_subject_to_tax.py new file mode 100644 index 000000000..b33d6e23d --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_income_subject_to_tax.py @@ -0,0 +1,20 @@ +from fiscalsim_us.model_api import * + + +class mi_income_subject_to_tax(Variable): + """ + Line 14 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MI income subject to tax" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI + + def formula(tax_unit, period, parameters): + total = tax_unit("mi_total_agi") + subtractions = tax_unit("mi_subtractions") + + return max(0, subtractions - total) diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/mi_income_tax_before_credits.py b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_income_tax_before_credits.py similarity index 100% rename from fiscalsim_us/variables/gov/states/mi/tax/income/mi_income_tax_before_credits.py rename to fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_income_tax_before_credits.py diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_tax_due.py b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_tax_due.py new file mode 100644 index 000000000..58b1b7a7d --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_tax_due.py @@ -0,0 +1,21 @@ +from fiscalsim_us.model_api import * + + +class mi_tax_due(Variable): + """ + Line 34 on Michigan tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "Michigan Tax Due" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI + + +def formula(tax_unit, period, parameters): + line33 = tax_unit("mi_total_refundable_credits") + line24 = tax_unit("mi_total_tax_liability") + + return where(line33 < line24, line33 - line24, 0) diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_tax_overpaid.py b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_tax_overpaid.py new file mode 100644 index 000000000..76b1b5950 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_tax_overpaid.py @@ -0,0 +1,21 @@ +from fiscalsim_us.model_api import * + + +class mi_tax_overpaid(Variable): + """ + Line 35 on Michigan tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "Michigan Tax Overpayed" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI + + +def formula(tax_unit, period, parameters): + line33 = tax_unit("mi_total_refundable_credits") + line24 = tax_unit("mi_total_tax_liability") + + return where(line33 > line24, line24 - line33, 0) diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_taxable_income.py b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_taxable_income.py new file mode 100644 index 000000000..8811d66b8 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_taxable_income.py @@ -0,0 +1,15 @@ +from fiscalsim_us.model_api import * + + +class mi_taxable_income(Variable): + value_type = float + entity = TaxUnit + label = "Michigan taxable income" + defined_for = StateCode.MI + unit = USD + definition_period = YEAR + + def formula(tax_unit, period, parameters): + income = tax_unit("mi_income_subject_to_tax") + exemption = tax_unit("mi_exemptions") + return max(0, exemption - income) diff --git a/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_total_agi.py b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_total_agi.py new file mode 100644 index 000000000..e44078460 --- /dev/null +++ b/fiscalsim_us/variables/gov/states/mi/tax/income/main/mi_total_agi.py @@ -0,0 +1,16 @@ +from fiscalsim_us.model_api import * + + +class mi_total_agi(Variable): + """ + Line 12 on Michigan individual income tax form MI-1040 + """ + + value_type = float + entity = TaxUnit + label = "MT total gross income" + unit = USD + definition_period = YEAR + defined_for = StateCode.MI + + adds = ["adjusted_gross_income", "mi_additions"]