Skip to content
Draft
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
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## [2.39.0] - 2026-10-11

### Added

- Add taxsim_v17, TAXSIM-35's itemized deductions in taxable income (0 for filers who take the standard deduction).


## [2.38.24] - 2026-10-11

### Fixed
Expand Down
1 change: 1 addition & 0 deletions changelog.d/fix-known-violations-il-aabd.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove the Illinois AABD expense exemption from the known person-adds-group violations, which #9902 fixed, so the ratchet test passes again.
1 change: 1 addition & 0 deletions changelog.d/fix-se-pension-earned-income-limit.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Limit the self-employed SEP, SIMPLE and qualified plan deduction to the Pub. 560 maximum, based on Schedule C net profit less the deductible part of self-employment tax, so it can no longer reach 100% of profit or make AGI negative.
1 change: 1 addition & 0 deletions changelog.d/se-plan-business-farm-partnership.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Let self-employed people whose SEP, SIMPLE or qualified plan is established under a farm (Schedule F) or partnership (K-1 box 14 code A) business deduct their contributions, by default from the combined earned income of every profitable self-employment business, with the self-employed health insurance limit subtracting only the plan deduction attributable to the health plan's business.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
description: The US limits the deduction for employer contributions to a SEP or profit-sharing plan to this share of participants' compensation.
values:
2002-01-01: 0.25
metadata:
unit: /1
period: year
label: SEP and profit-sharing plan employer deduction limit rate
reference:
- title: 26 U.S. Code § 404(a)(3)(A)(i)(I) - Stock bonus and profit-sharing trusts
href: https://www.law.cornell.edu/uscode/text/26/404#a_3_A_i_I
- title: 26 U.S. Code § 404(h)(1)(C) - Simplified employee pensions
href: https://www.law.cornell.edu/uscode/text/26/404#h_1_C
- title: Economic Growth and Tax Relief Reconciliation Act of 2001, Pub. L. 107-16, § 616 (15 to 25 percent, years beginning after 2001)
href: https://www.congress.gov/107/plaws/publ16/PLAW-107publ16.pdf#page=66
- title: IRS Publication 560 (2025), Rate Table for Self-Employed
href: https://www.irs.gov/pub/irs-pdf/p560.pdf#page=40
- title: IRS Publication 560 (2022), Rate Table for Self-Employed
href: https://www.irs.gov/pub/irs-prior/p560--2022.pdf#page=35
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@
KNOWN_VIOLATIONS = {
# PolicyEngine/policyengine-us#9888.
("mt_misc_deductions", "adds", "casualty_loss_deduction"),
("il_aabd_expense_exemption_person", "adds", "state_withheld_income_tax"),
(
"ca_riv_general_relief_countable_property_value",
"adds",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,3 +152,18 @@
output:
# Form 7206 line 13: 10,000 - 0.25 x 2,825.91.
self_employed_health_insurance_ald_person: 9_293.5225

- name: Case 11, a farmer with health and retirement plans under the farm ends with AGI of zero.
period: 2023
absolute_error_margin: 0.01
input:
is_self_employed: true
farm_operations_income: 20_000
self_employed_pension_contributions_desired: 3_000
health_insurance_premiums: 20_000
output:
# Form 7206 line 13: 20,000 - 1,412.955 - 3,000 = 15,587.045.
self_employed_pension_contribution_ald_person: 3_000
self_employed_health_insurance_ald_person: 15_587.045
# 20,000 - 1,412.955 - 3,000 - 15,587.045.
adjusted_gross_income: 0
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
# One Form 7206 per plan: the limit is the earned income of the business under
# which the plan is established (self_employed_health_insurance_plan_business),
# or of the person's business with the largest earned income when that input
# is not supplied.
# is not supplied. Line 9 is the part of the Schedule 1 line 16 retirement plan
# deduction attributable to that business: the retirement plan's businesses
# (self_employed_pension_plan_business, by default every profitable one) take
# it in proportion to their line 8 amounts.

- name: Case 1, one business, the limit is net profit less half of self-employment tax.
period: 2022
Expand Down Expand Up @@ -167,12 +170,13 @@
# Lines 5 to 8: 10,000 / 40,000 = 0.25; 10,000 - 0.25 x 2,825.91.
self_employed_health_insurance_earned_income_limit: 9_293.5225

- name: Case 15, the plan deduction is attributable to Schedule C, so the partnership earns more.
- name: Case 15, a retirement plan under the Schedule C business leaves the partnership earning more.
period: 2023
absolute_error_margin: 0.01
input:
self_employment_income: 20_000
self_employed_pension_contributions_desired: 15_000
self_employed_pension_plan_business: SCHEDULE_C
partnership_self_employment_net_earnings: 10_000
output:
# Line 15: 30,000 x 0.9235 x 0.153 / 2 = 2,119.4325.
Expand Down Expand Up @@ -205,3 +209,63 @@
output:
self_employment_tax_ald_person: 706.4775
self_employed_health_insurance_earned_income_limit: 9_293.5225

- name: Case 18, retirement plans under both businesses split the plan deduction by earned income.
period: 2023
absolute_error_margin: 0.01
input:
self_employment_income: 20_000
self_employed_pension_contributions_desired: 15_000
partnership_self_employment_net_earnings: 10_000
output:
# Line 15: 30,000 x 0.9235 x 0.153 / 2 = 2,119.4325.
self_employment_tax_ald_person: 2_119.4325
# Line 8: Schedule C 18,587.045 and partnership 9,293.5225, together the
# retirement plan's earned income (Pub. 560 step 3), 27,880.5675.
self_employed_pension_earned_income: 27_880.5675
# Within the 2023 limit of min(66,000, 5,576.11 + 22,500,
# (27,880.57 + 22,500) / 2) = 25,190.28.
self_employed_pension_contribution_ald_person: 15_000
# Line 9: Schedule C 2 / 3 x 15,000 = 10,000; partnership 5,000.
# Line 10: Schedule C 8,587.045; partnership 4,293.5225.
self_employed_health_insurance_earned_income_limit: 8_587.045

- name: Case 19, a retirement plan under the partnership leaves the Schedule C business's earned income whole.
period: 2023
absolute_error_margin: 0.01
input:
self_employment_income: 20_000
self_employed_pension_contributions_desired: 15_000
self_employed_pension_plan_business: PARTNERSHIP
partnership_self_employment_net_earnings: 10_000
output:
# The partnership's earned income, 9,293.5225, caps the plan deduction.
self_employed_pension_contribution_ald_person: 9_293.5225
# Line 10: Schedule C 18,587.045 (line 9 is 0); partnership 0.
self_employed_health_insurance_earned_income_limit: 18_587.045

- name: Case 20, a farm's own retirement plan reduces the farm's limit.
period: 2023
absolute_error_margin: 0.01
input:
farm_operations_income: 20_000
self_employed_pension_contributions_desired: 3_000
output:
# Line 8: 20,000 - 1,412.955. Line 9: the farm's plan deduction, 3,000.
self_employed_pension_contribution_ald_person: 3_000
self_employed_health_insurance_earned_income_limit: 15_587.045

- name: Case 21, a health plan under the farm subtracts only the farm's share of the retirement plan deduction.
period: 2024
absolute_error_margin: 0.01
input:
self_employment_income: 30_000
farm_operations_income: 10_000
self_employed_pension_contributions_desired: 4_000
self_employed_health_insurance_plan_business: SCHEDULE_F
output:
# Line 15: 2,825.91. Line 8: Schedule C 27,880.5675 and farm 9,293.5225.
self_employed_pension_contribution_ald_person: 4_000
# Line 9 for the farm: 9,293.5225 / 37,174.09 x 4,000 = 1,000.
# Line 10: 9,293.5225 - 1,000.
self_employed_health_insurance_earned_income_limit: 8_293.5225
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
- name: Case 1, the deduction cannot make AGI negative when Schedule C profit is the only income.
period: 2025
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
self_employment_income: 20_000
self_employed_pension_contributions_desired: 20_000
output:
# Half of self-employment tax: 20,000 x 92.35% x 15.3% / 2 = 1,412.96.
# Pub. 560 Deduction Worksheet step 3: 20,000 - 1,412.96 = 18,587.05,
# the most the plan deduction can be (26 U.S.C. 404(a)(8)(C)).
self_employment_tax_ald: 1_412.96
self_employed_pension_contribution_ald_person: [18_587.05]
self_employed_pension_contribution_ald: 18_587.05
adjusted_gross_income: 0

- name: Case 2, contributions supplied directly are still limited.
period: 2025
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
self_employment_income: 20_000
self_employed_pension_contributions: 20_000
output:
self_employed_pension_contribution_ald_person: [18_587.05]
adjusted_gross_income: 0

- name: Case 3, a married couple's limits are each spouse's own.
period: 2025
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
self_employment_income: 200_000
self_employed_pension_contributions_desired: 100_000
person2:
age: 40
self_employment_income: 30_000
self_employed_pension_contributions_desired: 30_000
tax_units:
tax_unit:
members: [person1, person2]
marital_units:
marital_unit:
members: [person1, person2]
output:
# Person 1: 20% x 186,403.65 + 23,500 = 60,780.73 (the Pub. 560 2025
# example's step 3). Person 2: (27,880.57 + 23,500) / 2 = 25,690.28.
self_employed_pension_contribution_ald_person: [60_780.73, 25_690.28]
self_employed_pension_contribution_ald: 86_471.01

- name: Case 4, a farm's own plan is deductible and cannot make AGI negative.
period: 2025
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
farm_operations_income: 20_000
self_employed_pension_contributions_desired: 20_000
output:
# Pub. 560 step 1 is Schedule F line 34: 20,000. Step 3:
# 20,000 - 1,412.955 = 18,587.045, all of which deferrals can cover.
self_employed_pension_contribution_ald_person: [18_587.045]
adjusted_gross_income: 0

- name: Case 5, a partner's plan is deductible from K-1 box 14 code A earnings.
period: 2025
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
# The partnership's earnings enter gross income through
# partnership_income and self-employment tax through
# partnership_self_employment_net_earnings.
partnership_income: 20_000
partnership_self_employment_net_earnings: 20_000
self_employed_pension_contributions_desired: 20_000
output:
self_employed_pension_contribution_ald_person: [18_587.045]
adjusted_gross_income: 0
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@

- name: Self-employed pension ALD uses SSTB income
period: 2024
absolute_error_margin: 0.01
input:
sstb_self_employment_income: 8_000
self_employed_pension_contributions_desired: 9_000
output:
self_employed_pension_contribution_ald_person: 8_000
# Earned income: 8,000 - 7,388 x 15.3% / 2 = 7,434.82, all of which
# elective deferrals can cover (Pub. 560 Deduction Worksheet steps 9-19).
self_employed_pension_contribution_ald_person: 7_434.82

- name: Loss ALD includes SSTB self-employment losses
period: 2024
Expand Down
Loading