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/wi-homestead-dependent-income.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Leave a tax unit dependent's income, such as a child's Social Security, SSI, unemployment compensation or capital gains, and a dependent's rent and property taxes out of the Wisconsin homestead credit, and test each spouse separately as the claimant for its age and earned income requirements.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ values:
- adjusted_gross_income
# additional homestead income sources:
- tax_exempt_interest_income
- tax_exempt_social_security
# The household is the claimant and spouse (Wis. Stat. 71.52(4)), so
# this leaves out a dependent's benefits, unlike tax_exempt_social_security.
- filer_tax_exempt_social_security
- tax_exempt_pension_income
- tax_exempt_unemployment_compensation
# cash transfer income sources:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,35 @@
state_code: WI
output:
wi_homestead_credit: 0

- name: Case 5, a dependent grandchild's survivor benefits do not reduce the claimant's credit.
period: 2024
absolute_error_margin: 0.01
input:
people:
person1:
age: 70
social_security_retirement: 18_000
taxable_pension_income: 6_000
rent: 9_000
person2:
age: 17
is_tax_unit_dependent: true
social_security_survivors: 12_000
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WI
output:
# Household income 23,500 (6,000 + 18,000 - 500), without the
# grandchild's 12,000; it is under the 24,680 limit.
wi_homestead_income: 23_500
wi_homestead_eligible: true
# Rent with heat included: 9,000 x 20% = 1,800, capped at 1,460.
wi_homestead_property_tax: 1_800
# (1,460 - (23,500 - 8,060) x 8.785%) x 80% = (1,460 - 1,356.40) x 80%.
# Schedule H's Tables A and B round to bands and give 84.
wi_homestead_credit: 82.88
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
tax_units:
tax_unit:
members: [head]
loss_limited_net_capital_gains: -3_000 # line 3
filer_loss_limited_net_capital_gains: -3_000 # line 3
households:
household:
members: [head]
Expand Down Expand Up @@ -156,7 +156,7 @@
tax_units:
tax_unit:
members: [head, child]
loss_limited_net_capital_gains: 0
filer_loss_limited_net_capital_gains: 0
households:
household:
members: [head, child]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,93 @@
state_code: WI
output:
wi_homestead_eligible: false

# The claimant or the claimant's spouse must have earned income (2024
# Schedule H instructions, page 10); unemployment compensation is not earned
# income (page 7), and a dependent's wages do not qualify the claimant.

- name: Case 8, a dependent's wages do not meet the claimant's earned income test.
period: 2024
input:
people:
person1:
age: 40
unemployment_compensation: 6_000
person2:
age: 17
is_tax_unit_dependent: true
employment_income: 4_000
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WI
output:
wi_homestead_eligible: false

- name: Case 9, the claimant's own wages meet the earned income test.
period: 2024
input:
people:
person1:
age: 40
employment_income: 4_000
person2:
age: 17
is_tax_unit_dependent: true
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WI
output:
wi_homestead_eligible: true

# Either spouse can be the claimant, who must be 18 or older and 62 or older,
# disabled or have their own earned income (2024 Schedule H instructions,
# pages 4 and 10; Wis. Stat. 71.52(1g)).

- name: Case 10, one spouse's wages qualify even when the other has a larger self-employment loss.
period: 2024
input:
people:
person1:
age: 40
employment_income: 5_000
person2:
age: 40
self_employment_income: -8_000
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WI
output:
wi_homestead_eligible: true

- name: Case 11, the earner must also be 18 or older.
period: 2024
input:
people:
person1:
age: 17
employment_income: 6_000
is_tax_unit_head: true
person2:
age: 19
is_tax_unit_spouse: true
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WI
output:
wi_homestead_eligible: false
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,128 @@
# loss_ald deducts the loss of total_self_employment_income (0 here), so
# the add-back follows that total and household income is the same.
wi_homestead_income: 5_000

# A household is the claimant and the claimant's spouse (Wis. Stat. 71.52(4);
# 2024 Schedule H instructions, page 8), and the instructions say to leave out
# children's social security and SSI (page 13), so a dependent's income is not
# household income. The $500 deduction for each dependent still applies.

- name: Case 6, a dependent grandchild's survivor benefits are not household income.
period: 2024
absolute_error_margin: 0.01
input:
people:
person1:
age: 70
social_security_retirement: 18_000
taxable_pension_income: 6_000
person2:
age: 17
is_tax_unit_dependent: true
social_security_survivors: 12_000
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WI
output:
# No social security is taxable: 6,000 + 9,000 is under the 25,000 base.
adjusted_gross_income: 6_000
# Schedule H: 6,000 pension + 18,000 social security - 500 for one
# dependent = 23,500. The grandchild's 12,000 is left out.
wi_homestead_income: 23_500

- name: Case 7, a dependent's SSI and 2020 excluded unemployment compensation are not household income.
period: 2020
absolute_error_margin: 0.01
input:
people:
person1:
age: 66
social_security_retirement: 15_000
taxable_pension_income: 5_000
person2:
age: 17
is_tax_unit_dependent: true
unemployment_compensation: 8_000
ssi: 3_000
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WI
output:
# The child's 8,000 is under the 10,200 exclusion on the child's own
# federal return.
tax_exempt_unemployment_compensation: [0, 8_000]
# 5,000 pension + 15,000 social security - 500 = 19,500.
wi_homestead_income: 19_500

- name: Case 8, a dependent's capital loss is not added back to household income.
period: 2024
absolute_error_margin: 0.01
input:
people:
person1:
age: 70
social_security_retirement: 12_000
taxable_pension_income: 6_000
person2:
age: 17
is_tax_unit_dependent: true
long_term_capital_gains: -2_000
tax_units:
tax_unit:
members: [person1, person2]
spm_units:
spm_unit:
members: [person1, person2]
# No W-2 payments, which would count too (Tax 14.03(4)(b)3.b).
tanf: 0
households:
household:
members: [person1, person2]
state_code: WI
output:
# The child's loss is on the child's own return, so AGI stays 6,000 and
# Schedule 4 line 3 adds nothing back: 6,000 + 12,000 - 500 = 17,500.
adjusted_gross_income: 6_000
wi_homestead_disqualified_losses: 0
wi_homestead_income: 17_500

- name: Case 9, a dependent's capital gain does not shrink the claimant's loss add-back.
period: 2024
absolute_error_margin: 0.01
input:
people:
person1:
age: 70
social_security_retirement: 12_000
taxable_pension_income: 6_000
long_term_capital_gains: -3_000
person2:
age: 17
is_tax_unit_dependent: true
long_term_capital_gains: 2_000
tax_units:
tax_unit:
members: [person1, person2]
spm_units:
spm_unit:
members: [person1, person2]
# No W-2 payments, which would count too (Tax 14.03(4)(b)3.b).
tanf: 0
households:
household:
members: [person1, person2]
state_code: WI
output:
# AGI = 6,000 - 3,000 claimant's allowed loss = 3,000; the 3,000 loss is
# added back: 3,000 + 3,000 + 12,000 - 500 = 17,500.
adjusted_gross_income: 3_000
wi_homestead_disqualified_losses: 3_000
wi_homestead_income: 17_500
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,57 @@
state_code: WI
output:
wi_homestead_property_tax: 360 # = 200 + 800 * 0.20

# Property taxes count on a homestead the claimant or a household member owns
# (Wis. Stat. 71.52(7)), and rent the claimant and household pay (71.52(8)).
# The household is the claimant and spouse (71.52(4)).

- name: Case 2, property taxes a dependent pays do not count.
period: 2024
absolute_error_margin: 0.01
input:
people:
person1:
age: 30
employment_income: 12_000
person2:
age: 70
is_tax_unit_dependent: true
social_security_retirement: 26_000
real_estate_taxes: 2_000
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WI
output:
wi_homestead_property_tax: 0
wi_homestead_credit: 0

- name: Case 3, the claimant's rent and the spouse's property taxes count; a dependent's rent does not.
period: 2024
absolute_error_margin: 0.01
input:
people:
person1:
age: 45
rent: 6_000
person2:
age: 44
real_estate_taxes: 300
person3:
age: 17
is_tax_unit_dependent: true
rent: 1_000
tax_units:
tax_unit:
members: [person1, person2, person3]
households:
household:
members: [person1, person2, person3]
state_code: WI
output:
# 300 + 6,000 x 20% = 1,500.
wi_homestead_property_tax: 1_500
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,12 @@ def formula(tax_unit, period, parameters):
# (Form 4797), a tax-unit amount. other_net_gain does not separate
# the losses from involuntary conversions that line 9 leaves out.
business_property_loss = max_(0, -tax_unit("other_net_gain", period))
# Schedule 4, line 3: net capital loss included in income.
capital_loss = max_(0, -tax_unit("loss_limited_net_capital_gains", period))
# Schedule 4, line 3: net capital loss included in income. Only the
# claimant's and spouse's: a dependent's gains and losses are on the
# dependent's own return and outside the household (71.52(4)).
capital_loss = max_(
0, -tax_unit("filer_loss_limited_net_capital_gains", period)
)
return (
tax_unit.sum(person_losses * head_or_spouse)
+ business_property_loss
Expand Down
Loading
Loading