Abaque 08 · The residual

The 0% capital gains window

There is a bracket in which long-term gains are taxed at nothing at all. It is not an allowance you are given — it is whatever room your ordinary income leaves behind. Gains stack on top of ordinary income, so wages, an IRA withdrawal or a Roth conversion fill the bracket first and the window closes one dollar for every dollar they add. That single stacking rule is the whole sheet: it makes the window a residual, and it puts cheap conversions and free gains in direct competition for the same room.

Window open
Shuts at
Tax on your gain
Next ordinary $
Register
Sheet08 · Rev A
Inputs

Enter the chart here

Filing status
Ordinary income$70,000
Long-term gain realised$90,000
Age 65 or over
Fig. 1

The stack — why ordinary income goes first

Ordinary taxable income Gain taxed at 0% Gain taxed at 15% or 20% Sheltered by the deduction
Read this column from the bottom. The standard deduction is removed first, and it comes off ordinary income before it touches a gain. What ordinary income remains is taxed on its own ladder. Only then are the gains laid on top, and it is their position in the stack — not their size — that sets their rate. The consequence runs one way only: ordinary income pushes gains up into tax, but gains never push ordinary income into a higher ordinary bracket. The 0% ceiling is a fixed height on this column; every dollar of ordinary income raises the floor beneath the gains toward it.
Fig. 2

The design chart — what the window is worth at your income

0% window — your filing status Gains here are free Gains here cost 15% The other filing status
This is the abaque proper: enter on the horizontal axis with your ordinary income, go up to the line, read the gain you can realise at zero tax. The line has slope minus one: exactly one dollar of window lost per dollar of ordinary income, with no curvature to interpolate, because the rule is pure subtraction. Both axes carry the same range here, and the two intercepts are the same figure — the window is at its widest by precisely the amount of ordinary income that would close it. Beyond that point it does not exist at any gain. Note that the married line is exactly twice the single line at twice the income: the capital gains brackets are one of the few places the Code doubles cleanly for a couple.
Window still open
Realised tax-free
Spilled into 15%
Effective rate on the gain
Fig. 3

What the next dollar of ordinary income really costs

True marginal rate Your ordinary bracket alone The displacement premium
A dollar of Roth conversion is not taxed once. It is taxed at your bracket rate, and it evicts a dollar of gain from the 0% bracket into the 15% one. Inside the window the two add: 12% becomes 27%. Then comes the part nobody expects — at the moment the window shuts, the marginal rate falls, because there is no longer anything left to displace. Earning more makes your next dollar cheaper. It is the same shape as the Social Security torpedo, produced by an entirely different mechanism, and it means the cheapest years to convert are exactly the years the window is widest. You cannot spend the same room twice. Push the gain slider high and drag ordinary income down below the standard deduction: the curve does not go to zero. With enough gain stacked above it, a dollar of ordinary income that is itself entirely untaxed still costs 15%, because it lifts a gain dollar out of the free bracket. There is no income low enough to make that dollar free.
Calculation

Every step, at your numbers

Table 1

The window closing, dollar by dollar

Ordinary incomeTaxable ordinary0% window Gain untaxedGain taxedTax on gainNext ordinary $
Your realised gain is held constant down the table; only ordinary income moves. The highlighted row is the point at which the window shuts — watch the last column fall as you cross it.
Method, the stacking rule in full, and what is not modelled

The arithmetic

taxable income TI = max(0, ordinary + gain − deduction) ordinary taxable OTI = max(0, ordinary − deduction) taxable gain TG = TI − OTI the gain occupies the taxable-income interval [OTI, OTI + TG] 0% on whatever part of it falls below the 0% bracket top 15% on the part between the 0% top and the 15% top 20% on anything above the 15% top 0% window = max(0, 0% bracket top + deduction − ordinary income)

Every rate boundary here is measured in taxable income, which is why the deduction appears in the window formula: it shifts the whole ladder up in gross-income terms. The window is a straight line of slope −1 because nothing in that expression is curved.

The deduction eats ordinary income first

This is not a rounding detail. If ordinary income is below the deduction, the leftover shelters gains directly, and the window is wider than the bracket top alone would suggest. It is why the sheet plots the deduction as the basement of the column rather than as a separate subtraction.

The stacking rule runs one way

Gains sit on top, so they can be pushed by ordinary income but cannot push it. A large realised gain will never move a dollar of wages from the 12% bracket to the 22% one. It will, however, raise adjusted gross income — and every means-tested threshold in retirement reads AGI, not taxable income. The gain is invisible to your ordinary brackets and entirely visible to Medicare.

One indexed ceiling, one frozen one

The 0% bracket top is indexed and climbs every January. The net investment income tax threshold sitting above it — $200,000 single, $250,000 joint — is frozen, and has not moved since 2013. The married 0% top has risen about 36% over that period, from $72,500 to $98,900, while the surtax floor above it has not moved a dollar. The corridor between free gains and surtaxed gains narrows every year without a vote being taken. This is the register's drift law doing its job: two numbers on the same chart that must not be aged forward at the same rate.

The 0% top is no longer the 12% bracket top

They used to be the same number by construction — the 0% rate applied to anyone in the bottom two ordinary brackets. The 2017 Act cut them loose and gave the capital gains thresholds their own indexing, so they now drift apart. For 2026 the single figures are $49,450 and $50,400: a $950 gap that exists for no reason other than two separate escalators running on the same base. Do not assume the top of your 12% bracket is the top of your 0% one.

What is not modelled

  • State tax. Most states tax capital gains as ordinary income and know nothing of a 0% bracket. A federally free gain is rarely a free gain.
  • Basis. The slider is the gain, not the sale. Realising $90,000 of gain on a position that has doubled means selling $180,000 of it.
  • Social Security. Gains raise provisional income and can drag benefits into tax at up to $1.85 per dollar — sheet 03. That interaction is real and is not included here.
  • The ACA credit and IRMAA. Both read modified AGI, both have cliffs, and a gain harvested at 0% federal tax can still cost thousands at either — sheets 05 and 07.
  • Other rate buckets. Unrecaptured §1250 gain is taxed at up to 25%, collectibles at up to 28%. Neither uses this ladder.
  • Losses. Carryovers, wash sales and the $3,000 ordinary offset all change the gain figure before it reaches this chart.
  • Short-term gains and ordinary dividends, which are ordinary income — put them in the left-hand slider, not the right.
  • The senior bonus deduction of $6,000 / $12,000, which would widen the window further but expires after tax year 2028. The 65+ toggle applies only the permanent §63(f) addition.

Confidence

Both 0% bracket tops, both 15% tops, the rate ladder, both standard deductions, the age-65 additions and all bracket edges are Verified against Rev. Proc. 2025-32 and the Code. The net investment income tax threshold and rate are Verified and frozen. Nothing on this sheet rests on an unverified datum.

This is arithmetic, not advice. Dollar figures are approximate and re-indexed; every threshold shown moves in January except the ones the register marks frozen. Harvesting gains, converting to Roth and claiming benefits interact in ways no single sheet captures, and the order you do them in matters. Bring the numbers to a CFP or CPA before acting on them.