Skip to content

Add passive partnership/S-corp income input to the NIIT base - #9306

Merged
MaxGhenis merged 1 commit into
mainfrom
niit-passive-pass-through
Aug 19, 2026
Merged

Add passive partnership/S-corp income input to the NIIT base#9306
MaxGhenis merged 1 commit into
mainfrom
niit-passive-pass-through

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

The NIIT source list (gov.irs.investment.income.sources) included rental income but omitted the section 1411(c)(1)(A)(ii) passive-business leg entirely, so passive pass-through income was never taxed under NIIT.

This adds a passive_partnership_s_corp_income input — the section 469 passive subset of partnership_s_corp_income, which is already in gross income, so including the subset in the NIIT base adds no income to AGI — and appends it to the source list from 2013 (NIIT has included passive business income since inception). It defaults to zero, so behavior is unchanged until a dataset supplies it; the Microcosm data side can populate it from the JCT/SOI passivity evidence gathered in Microcosm #530.

Deliberately excluded: the estate-income leg of #9304. estate_income is not in gov.irs.gross_income.sources today (placeholder comments mark the spot), and taxing income under NIIT before it enters AGI would be incoherent — that leg is blocked on gross-income inclusion first, re-scoped on the issue.

Tests: above-threshold NIIT computation with the new input (3.8% × min(NII, excess AGI)), below-threshold zero, and a default-zero regression case; also deduplicates two identically-named existing test cases.

Refs #9304

🤖 Generated with Claude Code

@codecov

codecov Bot commented Aug 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (8326a14) to head (f7e7bd3).
⚠️ Report is 53 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #9306    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files           12         1    -11     
  Lines          161        10   -151     
==========================================
- Hits           161        10   -151     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Data-side population tracked in PolicyEngine/microcosm#722 (assignment stage: SCF non-actively-managed-business shape, SOI/Form 8960 level) with the anchor ingestion in PolicyEngine/chronicle#179. Until that lands this input stays at its zero default, so merging this PR changes no results — it makes the NIIT base able to receive the passive leg.

The NIIT source list included rental income but omitted the section
1411(c)(1)(A)(ii) passive-business leg entirely. Add a
passive_partnership_s_corp_income input (the section 469 passive subset
of partnership_s_corp_income, which is already in gross income) and
include it in gov.irs.investment.income.sources from 2013. Defaults to
zero, so behavior is unchanged until data supplies it. The estate leg
of #9304 stays out deliberately: estate_income is not in gross income
today, so taxing it under NIIT first would be incoherent.

Refs #9304

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis force-pushed the niit-passive-pass-through branch from e62446d to f7e7bd3 Compare August 19, 2026 14:15
@MaxGhenis
MaxGhenis merged commit 81fd50a into main Aug 19, 2026
33 checks passed
@MaxGhenis
MaxGhenis deleted the niit-passive-pass-through branch August 19, 2026 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant