diff --git a/changelog.d/mo-se-tax-addback.fixed.md b/changelog.d/mo-se-tax-addback.fixed.md new file mode 100644 index 00000000000..ce3a8e4534b --- /dev/null +++ b/changelog.d/mo-se-tax-addback.fixed.md @@ -0,0 +1 @@ +Limit Missouri's itemized deduction for self-employment tax to the part the filer didn't deduct in computing federal adjusted gross income (RSMo 143.141(4)(c)). diff --git a/policyengine_us/parameters/gov/states/mo/tax/income/deductions/itemized.yaml b/policyengine_us/parameters/gov/states/mo/tax/income/deductions/itemized.yaml index 3697722ac65..d9d65a9a38d 100644 --- a/policyengine_us/parameters/gov/states/mo/tax/income/deductions/itemized.yaml +++ b/policyengine_us/parameters/gov/states/mo/tax/income/deductions/itemized.yaml @@ -7,7 +7,8 @@ values: - employee_social_security_tax - employee_medicare_tax - additional_medicare_tax - - self_employment_tax + # RSMo 143.141(4)(c): only the part not deducted in federal AGI. + - mo_self_employment_tax_addback metadata: unit: list label: Missouri itemized deduction sources diff --git a/policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_itemized_deductions.yaml b/policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_itemized_deductions.yaml index b6d54f54e1c..27eec9d47e8 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_itemized_deductions.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_itemized_deductions.yaml @@ -113,3 +113,37 @@ state_code: MO output: mo_itemized_deductions: 10_000 + +# Single filer, $100,000 of self-employment income and $20,000 of cash +# charity. The filer owes 14,129.55 of self-employment tax and deducts half +# (7,064.775) in computing federal AGI, so Missouri allows the other half as +# an itemized deduction (RSMo 143.141(4)(c)). With the charity, itemized +# deductions total 27,064.775, and the 0.01 margin covers either rounding of +# the half cent. If the model counted the full tax, they would total 34,129.55. +- name: 2017 self-employment tax counted net of the federal AGI deduction + period: 2017 + absolute_error_margin: 0.01 + input: + people: + head: {age: 40, self_employment_income: 100_000, charitable_cash_donations: 20_000} + tax_units: {tax_unit: {members: [head]}} + households: {household: {members: [head], state_code: MO}} + output: + self_employment_tax: 14_129.55 + self_employment_tax_ald: 7_064.77 + mo_self_employment_tax_addback: 7_064.77 + mo_itemized_deductions: 27_064.78 + +- name: 2024 self-employment tax counted net of the federal AGI deduction + period: 2024 + absolute_error_margin: 0.01 + input: + people: + head: {age: 40, self_employment_income: 100_000, charitable_cash_donations: 20_000} + tax_units: {tax_unit: {members: [head]}} + households: {household: {members: [head], state_code: MO}} + output: + self_employment_tax: 14_129.55 + self_employment_tax_ald: 7_064.77 + mo_self_employment_tax_addback: 7_064.77 + mo_itemized_deductions: 27_064.78 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_self_employment_tax_addback.yaml b/policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_self_employment_tax_addback.yaml new file mode 100644 index 00000000000..19457054775 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_self_employment_tax_addback.yaml @@ -0,0 +1,66 @@ +# Missouri allows the self-employment tax as an itemized deduction only to the +# extent the filer didn't deduct it in computing federal AGI (RSMo +# 143.141(4)(c)). For 2017, filers include federal Form 1040 line 57 less +# line 27 on Form MO-A Part 2 line 7 (MO-1040 instructions, page 42). +- name: Half of the tax was deducted in federal AGI, so half is added + period: 2024 + input: + self_employment_tax: 1_000 + self_employment_tax_ald: 500 + state_code: MO + output: + mo_self_employment_tax_addback: 500 + +- name: Nothing deducted in federal AGI, so the addback equals the tax and no more + period: 2024 + input: + self_employment_tax: 1_000 + self_employment_tax_ald: 0 + state_code: MO + output: + mo_self_employment_tax_addback: 1_000 + +- name: Deduction above the tax leaves the addback at zero, not negative + period: 2024 + input: + self_employment_tax: 1_000 + self_employment_tax_ald: 1_200 + state_code: MO + output: + mo_self_employment_tax_addback: 0 + +- name: No self-employment tax + period: 2017 + input: + self_employment_tax: 0 + self_employment_tax_ald: 0 + state_code: MO + output: + mo_self_employment_tax_addback: 0 + +- name: Bounded between zero and the tax for several households at once + period: 2024 + input: + people: + a: {self_employment_tax: 2_000} + b: {self_employment_tax: 2_000} + c: {self_employment_tax: 0} + tax_units: + ta: {members: [a], self_employment_tax_ald: 1_000} + tb: {members: [b], self_employment_tax_ald: 3_000} + tc: {members: [c], self_employment_tax_ald: 0} + households: + ha: {members: [a], state_code: MO} + hb: {members: [b], state_code: MO} + hc: {members: [c], state_code: MO} + output: + mo_self_employment_tax_addback: [1_000, 0, 0] + +- name: Outside Missouri the addback is zero + period: 2024 + input: + self_employment_tax: 1_000 + self_employment_tax_ald: 500 + state_code: KS + output: + mo_self_employment_tax_addback: 0 diff --git a/policyengine_us/variables/gov/states/mo/tax/income/deductions/mo_self_employment_tax_addback.py b/policyengine_us/variables/gov/states/mo/tax/income/deductions/mo_self_employment_tax_addback.py new file mode 100644 index 00000000000..89cfc92520b --- /dev/null +++ b/policyengine_us/variables/gov/states/mo/tax/income/deductions/mo_self_employment_tax_addback.py @@ -0,0 +1,26 @@ +from policyengine_us.model_api import * + + +class mo_self_employment_tax_addback(Variable): + value_type = float + entity = TaxUnit + label = "Missouri itemized deduction for self-employment tax" + unit = USD + documentation = ( + "Self-employment tax added to Missouri itemized deductions, net of the " + "part already deducted in computing federal adjusted gross income." + ) + definition_period = YEAR + reference = ( + "https://revisor.mo.gov/main/OneSection.aspx?section=143.141", + # PDF page 42: Form MO-A Part 2 line 7. + "https://dor.mo.gov/forms/MO-1040%20Instructions_2017.pdf#page=42", + ) + defined_for = StateCode.MO + + def formula(tax_unit, period, parameters): + # RSMo 143.141(4)(c): Missouri allows the tax only to the extent the + # filer didn't deduct it in computing federal AGI. + self_employment_tax = add(tax_unit, period, ["self_employment_tax"]) + deducted = tax_unit("self_employment_tax_ald", period) + return max_(0, self_employment_tax - deducted)