Skip to content
Merged
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-ca-mn-casualty-loss.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Allow non-disaster personal casualty and theft losses in California and Minnesota itemized deductions (and Minnesota alternative minimum taxable income), which do not follow the federal limit to declared disasters (Cal. Rev. & Tax. Code 17204(b); Minn. Stat. 290.0122, subd. 8): add `ca_casualty_loss_deduction` and `mn_casualty_loss_deduction`, each the loss less $100 and 10% of federal adjusted gross income, in place of the federal deduction.
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
description: The IRS reduces each casualty or theft loss of personal-use property by this amount before applying the income floor.
values:
2008-01-01: 100
2009-01-01: 500
2010-01-01: 100
metadata:
unit: currency-USD
period: year
label: Casualty loss reduction per casualty
reference:
- title: 26 U.S.C. § 165(h)(1)
href: https://www.law.cornell.edu/uscode/text/26/165#h_1
- title: 2008 Form 4684, line 11
href: https://www.irs.gov/pub/irs-prior/f4684--2008.pdf#page=1
- title: 2009 Form 4684, line 11
href: https://www.irs.gov/pub/irs-prior/f4684--2009.pdf#page=1
- title: 2022 Form 4684, line 11
href: https://www.irs.gov/pub/irs-prior/f4684--2022.pdf#page=1
- title: IRS Publication 547 (2022), $100 Rule
href: https://www.irs.gov/pub/irs-prior/p547--2022.pdf#page=10
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ description: Itemized deductions excluded from CA high-AGI limitation.
values:
2021-01-01:
- medical_expense_deduction
- casualty_loss_deduction
# California's own casualty and theft loss (Schedule CA line 15), which
# replaces the federal one in the pre-limitation total.
- ca_casualty_loss_deduction
- non_mortgage_interest

metadata:
Expand All @@ -18,5 +20,12 @@ metadata:
href: https://www.ftb.ca.gov/forms/2024/2024-540-ca-instructions.html
- title: 2025 Form 540 Schedule CA instructions
href: https://www.ftb.ca.gov/forms/2025/2025-540-ca-instructions.html
- title: 2024 Schedule CA (540) instructions, line 29 itemized deductions worksheet, line 2
href: https://www.ftb.ca.gov/forms/2024/2024-540-booklet.pdf#page=68
- title: Cal. Rev. & Tax. Code § 17077
href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=RTC&sectionNum=17077
# R&TC 17077 adopts 26 U.S.C. 68, whose subsection (c)(3) (before P.L. 119-21)
# leaves casualty and theft losses described in 165(c)(2) or (3) out of the
# deductions the limitation reduces.
- title: 26 U.S.C. § 68 (amendment notes for subsection (c)(3))
href: https://www.law.cornell.edu/uscode/text/26/68
13 changes: 11 additions & 2 deletions policyengine_us/reforms/states/mn/walz/mn_walz_hf1938.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,13 +112,22 @@ def formula(tax_unit, period, parameters):
# ... calculate pre-limitation itemized deductions
itm_deds_less_salt = tax_unit("itemized_deductions_less_salt", period)
capped_property_taxes = tax_unit("capped_property_taxes", period)
mn_itm_deds = itm_deds_less_salt + capped_property_taxes
# Schedule M1SA line 19 takes Minnesota's own casualty and theft
# loss (Schedule M1CAT) in place of the federal one.
federal_casualty_loss = tax_unit("casualty_loss_deduction", period)
mn_casualty_loss = tax_unit("mn_casualty_loss_deduction", period)
mn_itm_deds = (
itm_deds_less_salt
- federal_casualty_loss
+ mn_casualty_loss
+ capped_property_taxes
)
# ... calculate itemized deductions offset
p = parameters(period).gov.states.mn.tax.income.deductions.itemized
exempt_deds = add(
tax_unit,
period,
["medical_expense_deduction", "casualty_loss_deduction"],
["medical_expense_deduction", "mn_casualty_loss_deduction"],
)
net_deds = max_(0, mn_itm_deds - exempt_deds)
net_deds_offset = p.reduction.alternate.rate * net_deds
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
# 2024 Schedule CA (540) instructions, line 15 (Form 540 booklet, PDF p. 66):
# federal law allows the personal casualty and theft loss deduction only for a
# federally declared disaster; "California law does not conform." Filers
# "complete another federal Form 4684 ... using California amounts".
# Cal. Rev. & Tax. Code 17204(b) (as amended by SB 711, 2025): 26 U.S.C.
# 165(h)(5) "shall not apply".
# FTB Publication 1034 (PDF p. 4): "subtract $100 and then 10% of your federal
# adjusted gross income."
# 2024 Form 4684: line 11 enters $100; line 17 enters 10% of adjusted gross
# income from Form 1040 line 11; line 18 is line 16 less line 17, not below 0.
# A joint return is one individual for the $100 rule (165(h)(4)(B)). The model
# records one loss amount per person, not separate casualty events, so a
# return's losses are treated as one casualty. A dependent's loss belongs on
# the dependent's own return, as the dependent's income does.

- name: Case 1, the $100 reduction applies before the 10 percent floor.
period: 2024
input:
state_code: CA
employment_income: 100_000
casualty_loss: 15_000
output:
# Form 4684: line 12 = 15,000 - 100 = 14,900; line 17 = 10% x 100,000
# = 10,000; line 18 = 14,900 - 10,000.
ca_casualty_loss_deduction: 4_900
# California allows the loss though the federal deduction is suspended.
casualty_loss_deduction: 0

- name: Case 2, a loss $100 above the floor nets to zero.
period: 2024
input:
state_code: CA
employment_income: 100_000
casualty_loss: 10_100
output:
# (10,100 - 100) - 10% x 100,000 = 10,000 - 10,000
ca_casualty_loss_deduction: 0

- name: Case 3, a loss $101 above the floor leaves $1.
period: 2024
input:
state_code: CA
employment_income: 100_000
casualty_loss: 10_101
output:
# (10,101 - 100) - 10% x 100,000 = 10,001 - 10,000
ca_casualty_loss_deduction: 1

- name: Case 4, a loss of exactly $100 is fully absorbed by the $100 reduction.
period: 2024
input:
state_code: CA
casualty_loss: 100
output:
ca_casualty_loss_deduction: 0

- name: Case 5, with no income a loss is deductible above the $100.
period: 2024
input:
state_code: CA
casualty_loss: 101
output:
# (101 - 100) - 10% x 0
ca_casualty_loss_deduction: 1

- name: Case 6, Publication 547 Example 1 with $80,000 of AGI.
period: 2024
input:
state_code: CA
employment_income: 80_000
casualty_loss: 14_800
output:
# IRS Publication 547 (2017, PDF p. 10), Example 1: loss after
# reimbursement 14,800; subtract $100 = 14,700; subtract 10% of 80,000 AGI
# = 6,700.
ca_casualty_loss_deduction: 6_700

- name: Case 7, the floor uses federal AGI, not California AGI.
period: 2024
input:
state_code: CA
adjusted_gross_income: 100_000
ca_agi: 60_000
casualty_loss: 15_000
output:
# (15,000 - 100) - 10% x 100,000 federal AGI = 4,900. On California AGI it
# would be 14,900 - 6,000 = 8,900.
ca_casualty_loss_deduction: 4_900

- name: Case 8, a negative federal AGI gives no floor, not a larger loss.
period: 2024
input:
state_code: CA
adjusted_gross_income: -20_000
casualty_loss: 15_000
output:
# The 10% floor is not allowed below zero: 15,000 - 100.
ca_casualty_loss_deduction: 14_900

- name: Case 9, a joint return reduces the spouses' pooled losses by $100 once.
period: 2024
input:
people:
person1:
age: 40
employment_income: 60_000
casualty_loss: 10_000
person2:
age: 40
employment_income: 40_000
casualty_loss: 5_000
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: CA
output:
filing_status: JOINT
# (10,000 + 5,000 - 100) - 10% x 100,000 = 14,900 - 10,000
ca_casualty_loss_deduction: 4_900

- name: Case 10, a dependent's loss is left to the dependent's own return.
period: 2024
input:
people:
person1:
age: 40
employment_income: 100_000
casualty_loss: 15_000
person2:
age: 10
casualty_loss: 5_000
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: CA
output:
is_tax_unit_dependent: [false, true]
# The child's 5,000 is not the parent's loss.
# (15,000 - 100) - 10% x 100,000 = 14,900 - 10,000
ca_casualty_loss_deduction: 4_900

- name: Case 11, a loss only the dependent had gives the parent nothing.
period: 2024
input:
people:
person1:
age: 40
employment_income: 100_000
person2:
age: 10
casualty_loss: 15_000
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: CA
output:
is_tax_unit_dependent: [false, true]
ca_casualty_loss_deduction: 0

- name: Case 12, California keeps allowing the loss under its 2025 conformity date.
period: 2026
input:
state_code: CA
employment_income: 100_000
casualty_loss: 15_000
output:
# R&TC 17204(b) turns 165(h)(5) off for taxable years from 2025.
ca_casualty_loss_deduction: 4_900
casualty_loss_deduction: 0

- name: Case 13, the deduction is zero outside California.
period: 2024
input:
state_code: NY
employment_income: 100_000
casualty_loss: 15_000
output:
ca_casualty_loss_deduction: 0

- name: Case 14, lifting the federal suspension does not change California's deduction.
period: 2024
input:
gov.irs.deductions.itemized.casualty.active: true
state_code: CA
employment_income: 100_000
casualty_loss: 15_000
output:
# California's deduction does not read the federal switch.
ca_casualty_loss_deduction: 4_900
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,26 @@
ca_itemized_deductions_pre_limitation: 10_000
output:
ca_itemized_deductions: 7_000 # charity subject to limitation

# 2024 Schedule CA (540) instructions, line 29 worksheet (Form 540 booklet,
# PDF p. 68): line 2 takes medical expenses, investment interest, casualty and
# theft losses and gambling losses out before the 80%/6% limitation. Cal. Rev.
# & Tax. Code 17077 adopts 26 U.S.C. 68, which leaves 165(c)(3) losses out.
- name: California casualty loss is not subject to the high-AGI limitation
absolute_error_margin: 0.01
period: 2024
input:
state_code: CA
filing_status: SINGLE
adjusted_gross_income: 244_857 + 50_000
ca_charitable_deduction: 1_000
casualty_loss: 40_000
output:
# Form 4684: (40,000 - 100) - 10% x 294,857 = 39,900 - 29,485.70
ca_casualty_loss_deduction: 10_414.30
ca_itemized_deductions_pre_limitation: 11_414.30
# Worksheet: line 3 = 11,414.30 - 10,414.30 = 1,000; line 4 = 80% x 1,000
# = 800; line 8 = 6% x 50,000 = 3,000; line 9 = 800.
# 11,414.30 - 800. Were the loss limited too, line 4 would be 9,131.44,
# line 9 would be 3,000 and the result 8,414.30.
ca_itemized_deductions: 10_614.30
Original file line number Diff line number Diff line change
Expand Up @@ -385,3 +385,31 @@
# Also includes #10032's IRA 219(g) phase-out, since this is a two-cause
# CA + IRA cell.
state_income_tax_before_refundable_credits: 4441.45

# 2024 Schedule CA (540) instructions, line 15 (Form 540 booklet, PDF p. 66):
# "California law does not conform" to the federal limit of personal casualty
# losses to declared disasters; filers complete a second Form 4684 with
# California amounts.
- name: California allows a non-disaster casualty loss the federal return does not.
period: 2024
input:
state_code: CA
employment_income: 100_000
casualty_loss: 15_000
output:
casualty_loss_deduction: 0
# Form 4684: (15,000 - 100) - 10% x 100,000 = 4,900
ca_itemized_deductions_pre_limitation: 4_900

- name: California counts the casualty loss once when the federal suspension is lifted.
period: 2024
input:
gov.irs.deductions.itemized.casualty.active: true
state_code: CA
employment_income: 100_000
casualty_loss: 15_000
output:
ca_casualty_loss_deduction: 4_900
# The federal deduction, now positive, is replaced by California's 4,900,
# not added to it.
ca_itemized_deductions_pre_limitation: 4_900
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,29 @@
state_code: MN
output:
mn_amt_taxable_income: 200_000 - 250 - 3_000

# 2024 Schedule M1MT, line 12 (PDF p. 1): "Casualty and theft losses (from line
# 19 of Schedule M1SA)", Minnesota's own amount from Schedule M1CAT.
- name: MN AMT taxable income subtracts the Minnesota casualty loss
period: 2024
input:
adjusted_gross_income: 200_000
mn_itemizing: true
casualty_loss: 40_000
state_code: MN
output:
# The federal deduction is suspended.
casualty_loss_deduction: 0
# M1CAT: (40,000 - 100) - 10% x 200,000 = 19,900
mn_casualty_loss_deduction: 19_900
mn_amt_taxable_income: 200_000 - 19_900

- name: MN AMT taxable income leaves the casualty loss out for a non-itemizer
period: 2024
input:
adjusted_gross_income: 200_000
mn_itemizing: false
casualty_loss: 40_000
state_code: MN
output:
mn_amt_taxable_income: 200_000
Loading
Loading