Skip to content

Form 8960 Part II deductions and line 7 are never populated, so NIIT is overstated for anyone with investment interest or state income tax #46

Description

@ocarlsen

Form 8960 lines 7, 9a and 9b always compute as zero. No node writes line7_other_modifications, line9a_investment_interest_expense or line9b_state_local_tax (they exist only in the form8960 schema and the PDF/MeF mappers), and form8960 is not an input node, so a user cannot supply them either. Net investment income is therefore overstated whenever any of the three applies, and line 17 NIIT with it.

Found while re-running a real TY2025 return against the TurboTax-filed original on v2.0.4. After #39 and #40, every other line of that return matched, and the entire remaining total-tax difference was this form: 8959 matched to the dollar, and 8960 line 12 was high by exactly (9a + 9b − line 7).

Repro (v2.0.4)

R=$(opentax return create --year 2025 | grep -o '[0-9a-f-]\{36\}' | head -1)
opentax form add --returnId $R --node_type general    '{"filing_status":"single"}'
opentax form add --returnId $R --node_type w2         '{"box1_wages":300000,"box2_fed_withheld":60000,"box15_state":"CA","box17_state_withheld":25000}'
opentax form add --returnId $R --node_type f1099div   '{"payerName":"Example Broker","box1a":50000,"box1b":0,"box11":false,"isNominee":false}'
opentax form add --returnId $R --node_type f1099m     '{"payer_name":"Example Broker","payer_tin":"123456789","recipient_tin":"987654321","box8_substitute_payments":1000}'
opentax form add --returnId $R --node_type schedule_a '{"line_9_investment_interest":5000,"line_8a_mortgage_interest_1098":20000}'
opentax form add --returnId $R --node_type form8960   '{"filing_status":"single","magi":351000,"line9a_investment_interest_expense":5000}'
opentax return export --returnId $R --type pdf --force --output out.pdf

The form8960 add fails with Node type form8960 is not a valid input for f1040/2025. The exported Form 8960 shows line 2 = 50,000, line 8 = 50,000, lines 7, 9a, 9b and 11 blank, line 12 = 50,000, line 17 = 1,900.

Expected

  • Line 7: the 1,000 of substitute payments in lieu of dividends (1099-MISC box 8) is investment income. It already reaches Form 1040 line 8 via Schedule 1, but not 8960.
  • Line 9a: the deductible investment interest already on Schedule A line 9 (5,000 here) should flow to 9a.
  • Line 9b: the portion of state income tax allocable to investment income. The instructions allow any reasonable method; a common one is state tax × (NII ÷ AGI). This one needs either a computed default or an input.

In this repro that means line 12 should be at most 46,000 even before 9b, not 50,000.

Suggested fix

Wire schedule_a line 9 to form8960 9a and the f1099m box 8 amount to line 7. For 9b, compute a ratable allocation by default, and consider allowing a user override, since the allocation method is the taxpayer's choice.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions