How ZBee™ calculates your number
Last updated: July 21, 2026 · Tax year 2026
ZBee answers one question — how much can you spend each year without running out of money in your lifetime? — and it tries to answer it honestly. This page explains every method behind that figure and cites the authoritative source for each, so you can check our work. Nothing here is advice; it's a description of how a planning estimate is computed. See the Disclaimer.
Two principles run through all of it. The effective rates and outcomes are outputs, not inputs — ZBee never asks you to guess an "average tax rate"; it computes each year's tax from your actual income mix. And the figure is stress-tested, not best-case — it is solved to survive a confidence level you choose across a thousand simulated market histories, not to work only if returns are smooth.
Federal income tax
Each year's federal tax is computed from the real progressive brackets and the standard deduction (including the additional amount for filers aged 65+), with filing status taken from whether your plan includes a spouse. Bracket thresholds and the deduction are held in today's dollars and indexed by your inflation assumption, the way the IRS re-indexes them in practice. 2026 figures are from IRS Rev. Proc. 2025-32 (reflecting the One Big Beautiful Bill Act amendments).
Capital gains
Sales from taxable brokerage accounts are taxed at long-term capital-gains rates (0%, 15%, 20%), stacked on top of your ordinary taxable income so the gain is taxed by where it actually lands — the same breakpoints the IRS publishes (Rev. Proc. 2025-32). Only the gain portion of a taxable-account sale is taxed: ZBee uses your account's real cost basis when your brokerage reports it (or you enter it for a manual holding), so the embedded-gain share is yours, not a guess. When basis isn't available it falls back to assuming about half of a sale is gain. In higher-income years the 3.8% net investment income tax (NIIT) is added once your income (MAGI) crosses $200,000 (single) or $250,000 (married filing jointly) — its base is the realized gain plus the taxable account's dividend/interest yield (all §1411 investment income). The thresholds are fixed in statute and don't rise with inflation, so more of a long retirement's gains fall under it over time.
Social Security
You enter your benefit as a Primary Insurance Amount (the benefit at full retirement age). ZBee applies the SSA claiming adjustment for the age you actually claim — the early reduction (5/9 of 1% per month for the first 36 months, 5/12 of 1% thereafter) and delayed-retirement credits (2/3 of 1% per month to age 70), per 20 CFR §404.313 and §404.410. The benefit grows with an annual cost-of-living adjustment. Its taxability follows the provisional-income rule — up to 85% of the benefit becomes taxable above the thresholds (IRS Pub. 915, 26 U.S.C. §86); because those thresholds aren't indexed for inflation in law, more of the benefit becomes taxable over a long retirement, which ZBee reflects. For married plans the lower earner's spousal benefit uses SSA's excess arithmetic: 50% of the higher earner's PIA minus the lower earner's own PIA, reduced on the spousal schedule (25/36 of 1% per month for the first 36 months before full retirement age, 5/12 of 1% beyond) when it starts early — and it starts only once both spouses have filed, which is the practical effect of the post-2015 deemed-filing rules. Survivor benefits pay the deceased's benefit (delayed credits capped at the death age) reduced on SSA's widow(er) schedule — 71.5% at the age-60 eligibility floor, rising to 100% at the survivor's full retirement age (20 CFR §404.338). If a benefit is claimed before full retirement age while wages are still coming in, ZBee applies the SSA earnings test per worker — each worker's earned income is tested against the benefit on their own record (attribute a wage stream's owner in Money in), $1 withheld per $2 above that worker's annual exempt amount ($24,480 for 2026; 20 CFR §404.430) in years wholly under their full retirement age. Earned income means wages and self-employment; pensions, rental, and investment income are not tested. Two disclosed simplifications, both cautious: the special $1-per-$3 rule for the calendar year you reach full retirement age is not applied (that year is simply untested), and SSA's benefit recomputation at full retirement age — which credits withheld months back as a smaller early-claim reduction — is not modeled, so late-life benefits are modestly understated for affected plans.
Medicare (IRMAA)
For filers 65 and older, ZBee models the income-related monthly adjustment amount — the surcharge added to Medicare Part B and Part D premiums once income crosses each tier. It models only the surcharge (the income-driven part), not the base premium, which is an ordinary living expense your spending already covers. This matters because your withdrawal strategy drives it: a large tax-deferred withdrawal, an RMD, or a one-time gain can push you over a tier. Tiers and amounts are the 2026 CMS figures. (ZBee uses the current year's income rather than modeling the actual two-year lookback.)
ACA subsidy cliff (before Medicare)
For retirees on marketplace health coverage before 65, ZBee can flag the years whose income crosses — or comes within 10% of — the ACA premium-tax-credit ceiling: under the rules in force since 2026, subsidies end entirely at 400% of the federal poverty level (26 U.S.C. §36B as amended; the ARPA/IRA enhanced subsidies expired after 2025). The income tested is the ACA's own MAGI — ordinary income, realized gains, and the full Social Security benefit (not just the taxable part); tax-exempt interest legally counts but is not modeled. Poverty levels use the HHS guidelines governing the current coverage year (the ACA's prior-year convention) for the household size you enter, with the separate Alaska/Hawaii tables applied from your state selection, and are indexed forward with your inflation assumption. This is a qualitative flag, not a dollar estimate — the premium impact depends on your local benchmark (SLCSP) premium, which ZBee does not model — and the post-2025 rules are a stated assumption: if Congress extends the enhanced subsidies, ZBee's signed constants update retires the readout.
Required minimum distributions
Once you reach the RMD age — 73, or 75 if you were born in 1960 or later (SECURE 2.0 Act §107) — ZBee forces the minimum withdrawal from tax-deferred accounts each year, computed as the prior year-end balance divided by the IRS Uniform Lifetime Table divisor for your age (IRS Pub. 590-B). It is taxed as ordinary income; anything beyond what your spending needs is reinvested in your taxable account.
Account types and withdrawal order
Holdings are grouped into three tax treatments — taxable, tax-deferred (Traditional IRA/401(k)), and Roth (and HSA, treated as tax-free). Each year ZBee withdraws in the order you choose (taxable first is the standard, tax-efficient default), grossing each withdrawal up so the after-tax cash meets your spending. Because each bucket is taxed differently, the order changes the answer, and the year-by-year table shows the tax each year.
Roth conversions
You can enter a Roth-conversion plan — convert a fixed amount from tax-deferred to Roth each year over an age range — and ZBee shows what that plan does to your spendable figure, your lifetime tax, and your bequest. A conversion is realized as ordinary income in the year you make it, so it flows through the same brackets, Medicare IRMAA tiers, and Social-Security taxability as any other income; in return it lowers your future required minimum distributions and grows tax-free thereafter. To help you size a plan, the year-by-year table shows each year's bracket room — how much more ordinary income would fit before the next tax rate. ZBee measures the plan you enter; it does not recommend an amount or solve for an optimal one — that's a deliberate line: this tool tells you what your choices do, it doesn't make the choice for you. Conversions only affect the figures when income-tax estimation is on.
State income tax
Pick your state and ZBee applies a representative flat rate for it (the nine no-income-tax states are zero), or enter your own rate. Crucially, because most of a retiree's taxable income is retirement-plan income — IRA/401(k) withdrawals, RMDs, and pensions — ZBee models how your state treats that income, which is where a flat rate goes most wrong. Some states don't tax retirement income at all (for example Pennsylvania, Illinois, Mississippi, Iowa, and Missouri). Others exclude a per-person amount of it (Georgia, New York, Kentucky, Colorado, and more), and ZBee applies the exact shape of each break: a flat exclusion, one that phases out as income rises (Virginia), one that disappears above an income cliff (New Jersey, Connecticut), or one reduced by the Social Security you receive (Maryland, West Virginia, Maine). Per-person exclusions are counted per spouse and indexed for inflation. Capital gains are still taxed at the state rate, and Social Security is excluded, as most states don't tax it.
The figures are representative planning estimates verified against current state sources; age-tiered exclusions are modeled at their 65-and-older amount. Where a precise rule depends on something the plan can't distinguish — Rhode Island excludes IRA but not 401(k) income, for instance — ZBee errs toward taxing in full rather than overstating the break.
Inflation
Spending and Social Security grow with a single inflation assumption you can set; tax thresholds index with it. Investment returns are entered in nominal terms, so they already include the inflation premium.
Longevity (choosing an end age)
How long the money must last is itself uncertain, so rather than make you guess an end age, ZBee can turn a survival probability you can reason about — "the age I have a 1-in-10 chance of outliving" — into a planning horizon, with a separate table for each spouse. The model is a Gompertz mortality law calibrated to the SSA period life table so its upper-tail (25%/10%/5%-survival) ages line up with the published figures. It's a planning estimate; your own health and family history matter.
Market risk (sequence-of-returns)
A fixed average return understates risk, because the order of returns matters when you're drawing a portfolio down — a bad stretch early in retirement can sink a plan whose long-run average was fine. So the headline figure isn't built on one average. ZBee runs a Monte Carlo analysis of roughly a thousand simulated retirements, drawing each year's return for your actual asset mix from a realistic spread (more for stocks, almost none for cash) under a two-factor model so a diversified mix earns genuine diversification rather than moving in lockstep. The figure it reports is the highest spend that stays solvent in the share of those simulations you choose — your confidence level. Optional spending guardrails let the plan flex with markets, supporting a higher starting figure in exchange for a range of realized spending — see the next section.
The simulation is deterministic by design: the simulated market histories are fixed rather than re-rolled on every run, so the same holdings and assumptions always produce the same figure. Your number changes only when your data or your assumptions change — never because you pressed the button again — so a figure you saw yesterday is still checkable today.
You can choose how those simulated markets are generated. The default bell-curve model draws each year's return independently from a normal spread. It's simple and transparent, but real markets aren't normal: crashes are larger and more frequent than a bell curve implies, bad years cluster, and downturns tend to be followed by recoveries. The historical option instead replays real market history — S&P 500 and 10-year Treasury total returns since 1928 (Damodaran, NYU Stern) — resampled in multi-year blocks, so each simulation carries history's fat tails, its clustered bad stretches, and its mean reversion. Both methods use the same expected return and volatility for your mix; only the shape of the risk differs. Because real markets mean-revert, the historical method can support a somewhat higher safe spend over a long horizon than the bell curve — or a lower one at very cautious confidence levels, where the fat tail bites hardest. It is a re-sampling of the past, not a forecast; the future may be worse than any history we have.
Separately from either model, ZBee cross-examines the solved figure against intact history: the plan, as configured, is replayed through every complete stretch of real market returns since 1928 long enough to cover its horizon — actual S&P 500 and 10-year Treasury total returns, deflated by the CPI of those same years, in their real order, with no resampling or splicing. Replaying real (inflation-adjusted) returns matters: what made the mid-1960s sequences lethal was the inflation that followed, which a nominal replay against a constant inflation assumption would miss. The result appears under the spending-risk toggle as a falsifiable statement — "would have survived all 68 full market sequences since 1928" — with any failing sequences named. Approximations, disclosed: stock-like holdings follow the S&P 500 and bond-like the 10-year Treasury; cash holds even with inflation; fixed-dollar streams keep their real value; and only complete stretches count, so longer plans are tested against fewer of them. History is a hard test, not a guarantee.
Spending guardrails (Guyton-Klinger)
With guardrails on, spending follows the decision rules published by Jonathan Guyton and William Klinger in the Journal of Financial Planning (2004, 2006) — the most widely implemented dynamic-spending method in retirement planning. The plan anchors on the first retirement year's spending share (that year's spend as a share of the plan's sustainable payout — see the rails departure below) and re-tests it annually: capital preservation — if the rate drifts more than 20% above the anchor, spending is cut 10%; prosperity — more than 20% below, spending is raised 10%; and the withdrawal rule — after a negative-return year with the rate above the anchor, that year's inflation raise is skipped (permanently — there is no later make-up). Per the published method, the capital-preservation cut is suspended in the final 15 years of the horizon: late-plan drawdown toward your bequest is the plan working, not a market emergency. The headline figure is the starting spend those rules support; the Strategy row reports the 10th–90th percentile of the average annual spending the rules actually deliver across the simulated markets.
Where ZBee deliberately differs, in your favor: cuts, raises, and the skipped inflation raise apply only to non-essential spending — the essential budget you declare is never trimmed. That essential amount is the plan's floor; discretionary spending is free to trim toward it (or toward zero when you set no essential budget), exactly as the published rules allow. The papers' portfolio-management rule (sourcing withdrawals by asset class) is not implemented: ZBee sources withdrawals by tax bucket in the order you choose, because tax-aware ordering is the point of its withdrawal model. The papers' 6% cap on the annual inflation raise never binds, since ZBee uses your single fixed inflation assumption. And one departure the paper never contemplated: the rate is tested against the plan's sustainable payout — the steady paycheck the whole plan can afford — economic wealth (portfolio, plus the present value of guaranteed income still to come and of scheduled one-time cashflows, less the present value of the bequest earmark) divided by an annuity factor over the remaining horizon. Both the present values and that factor use a 2% real discount rate. That same rate converts the portfolio into a flow, so the portfolio is annuitized at a lower rate than the plan's own assumed return — a deliberate conservatism, since crediting it with its expected return inside the very rule that decides whether to cut after a downturn would understate sequence-of-returns risk. Normalizing by the factor is what makes horizons comparable: present-value decay cancels, so the rate moves when markets move rather than simply because a year has passed. The rate is deliberately not load-bearing — the simulation still sets the spending level and the published rules still set the step size, so the discount rate only has to make one year comparable to the next. Across 1–4% it moves the headline figure but barely the lived outcome. The published rules have one state variable (current balance), so a known inheritance landing mid-plan is indistinguishable from a bull market: it would mechanically trigger the raise rule and disarm the trim rule at exactly the wrong moments — making an expected windfall lower the solved figure. Counting scheduled cashflows in the resource base fixes that at the root (and, symmetrically, lets the rails brace ahead of a planned large expense). The plan trusts scheduled amounts as entered — an uncertain inheritance belongs in the plan at a haircut, or not at all.
This is a deliberate change from the published formulation, which tests spending as a share of portfolio alone and therefore cannot see income that has not started. Under that formulation a bridge period — retiring at 65, claiming Social Security at 70 — is indistinguishable from permanent depletion, and the rules trim as though the lean years were the whole retirement. Measuring against the plan's sustainable payout removes that blind spot while leaving Guyton-Klinger's own rules untouched: the same ±20% drift bands, the same 10% steps, the same capital-preservation suspension in the final 15 years. Only the denominator changes.
That denominator is not something ZBee invented. Measuring spending against annuitized economic wealth — what your resources would support as a level payout across the years remaining — rather than against the portfolio balance alone, is a long-established idea in retirement-spending methods, and several published approaches use it as the spending rule itself: the recalculated payout simply is what you spend that year, so spending tracks the market up and down annually. ZBee does not do that. It keeps Guyton-Klinger's rules as the spending rule and borrows only the measure of resources, so spending still moves in the published method's deliberate 10% steps inside ±20% bands, and a normal market year changes nothing at all. What is particular here is the pairing, not the measure.
One consequence is worth stating plainly, because it runs against intuition: on the same plan this model usually produces a lower opening figure than the published rule does. That is the mechanism working, not a cost of it. Because the published rule measures spending against a portfolio that is supposed to shrink, its ratio drifts upward as the plan proceeds normally — so trims accumulate and the opening figure is walked back over time. Measuring against a sustainable payout removes that drift: the ratio moves when markets move, not because a year has passed. In our own testing across eleven plan shapes, lifetime spending under the published rule settled below its opening figure on ten of them, averaging about 80% of it; under this model it settled at or above the opening figure on nine. Those are simulations of particular plans rather than a promise about yours — but the direction follows from the mechanism, not from the sample. A smaller number you can hold is worth more than a larger one that gets reduced later.
The alternative reading of the same problem — risk-based guardrails, which re-solve a success probability each year — needs either nested simulation or a fitted policy function. ZBee does not use one: normalizing the denominator addresses the same blind spot without running one policy in the simulation while displaying another, which would put two contradicting answers on screen. A consequence worth stating plainly: where guaranteed income alone covers the planned spending, no portfolio level triggers a trim, and the app reports that state rather than naming a threshold.
Because the headline's survival claim is conditional on actually following these rules, the app discloses them operationally: once spending has started, it shows the current year's trigger points as dollar figures — the resource level below which spending trims (and what the trimmed spending would be) and the level above which a raise is earned — so the policy the simulation assumes is one you can follow, and check, by hand.
Survivorship
For couples, each spouse has their own end age. After the first death the survivor files as single (higher brackets, smaller standard deduction) and Social Security drops to the larger of the two benefits — the "widow's penalty" that often makes the survivor years the tightest — and spending steps down to a fraction you set, since a couple's costs don't fully halve.
Keeping the figures current
Tax brackets, the standard deduction, capital-gains breakpoints, IRMAA tiers, and the RMD rules change. ZBee ships each version with the current year's known-good values built in, and licensed users' copies refresh to the latest figures automatically through a signed update — verified cryptographically before it's trusted — so a plan never quietly runs on a stale tax year.
What ZBee does not model
Honesty about the edges matters as much as the math. ZBee deliberately leaves some things out, and approximates others — here is the full list, so a number is never more precise than the assumptions under it:
- Not modeled: the alternative minimum tax (AMT), tax credits, and itemized deductions.
- Investment fees and costs are not separately modeled — fund expense ratios, advisory or platform fees, and trading costs all come out of your real-world return, and the historical market series ZBee resamples carry no fees either. Enter your expected returns net of the fees you actually pay, or the figure will run rich.
- Your asset mix is held constant: each account group keeps its current allocation for the whole horizon (dividends and surpluses are reinvested). No glide path or planned reallocation is modeled — the projection measures the portfolio you have, not one you might move to.
- State income tax uses a representative flat rate plus each state's retirement-income treatment (above), not its full progressive brackets. Those retirement-income exclusions are inflated along with everything else — correct for the many states that index them, but it overstates the shelter over a long retirement for the few whose exclusion is fixed in statute (e.g. New York's $20,000). Each state's rate is also held constant for the whole projection: where a state has already legislated a future cut, the projection keeps today's higher rate rather than stepping down on schedule (Montana, for example, is set to fall from 5.65% to 5.4% in 2027). That overstates the tax in those states — the cautious direction — and a rate a legislature has scheduled can still be changed before it takes effect. A local (county/city) income tax — Maryland's mandatory county tax, New York City, municipal income taxes in Ohio, Pennsylvania, and Michigan — is a user-entered flat rate added to the state rate and applied to the same base; local bases differ from state bases in fine ways (e.g. Pennsylvania's earned-income-only local tax) that one rate can't capture.
- Earned income (part-time work, wages, consulting) is reduced by the employee share of payroll tax — 7.65% FICA — before it's counted spendable, with no Social Security wage-base cap (over-withholds only above ~$176k of wages, the cautious direction). Self-employment tax actually runs about double the employee share; ZBee applies the employee share regardless, so self-employed income runs slightly rich.
- The 10% early-withdrawal penalty on pre-59½ tax-deferred withdrawals is modeled, keyed to the filer's age; ZBee treats tax-deferred accounts as one household pool (it does not assign specific IRAs to a specific spouse), and assumes no 72(t)/SEPP election — a strategy, not your current state.
- Social Security: the spousal early-claim reduction, deemed-filing timing, and the widow(er) survivor reduction (71.5% at 60 rising to 100% at full retirement age) are modeled, on whole years rather than months. Remaining simplifications: the earnings test does not withhold the auxiliary spousal top-up when the higher earner works before full retirement age (slightly rich in that rare case); the "widow's limit" (RIB-LIM) floor for a deceased spouse who claimed early is not modeled (cautious); and a survivor is assumed to take the survivor benefit as soon as it beats their own — no deliberate delay strategy (cautious).
- Taxable accounts are charged an assumed annual dividend/interest yield taxed each year (a real drag most calculators miss). The yield is taxed by what pays it: the share from the account's bond funds and cash is taxed as ordinary interest, the remainder as qualified dividends at capital-gains rates — so a bond-heavy taxable account carries the heavier drag it really has. (REIT and other non-qualified equity distributions are simplified into the qualified bucket; a taxable zero-coupon/STRIPS bond's imputed annual interest (OID) is not separately modeled.) A municipal-bond sleeve is exempt from that drag: recognized muni funds and tax-exempt money markets (a curated list of common tickers, e.g. MUB, VTEB, Vanguard tax-exempt funds) keep their federally tax-exempt distributions untaxed. Two simplifications: exempt interest is also left out of the MAGI used for the IRMAA tiers and Social Security taxability (in law it counts — a small understatement for muni holders near those thresholds), and state taxation of out-of-state munis is not modeled. An unrecognized muni fund keeps the ordinary (taxed) treatment — the cautious direction — and individual muni bonds entered with a maturity date are ladder income, never yield-dragged.
- Tax treatment follows the type, not the cadence. An inheritance, gift or home sale arrives untaxed by default — inheritances step up basis, and a primary-home gain inside the §121 exclusion is excluded — whether it arrives once or repeats. When part of it is genuinely taxable (a home sale above the exclusion, a business sale), you enter that part as the row's taxable gain and ZBee taxes it as a long-term capital gain in that year, counting it toward NIIT, IRMAA, and ACA income; on a repeating row the gain applies to each arrival, since the amount does. A pension, annuity, rental, royalties or part-time work is taxed as ordinary income instead, again at any cadence — so a deferred-compensation payout is entered as one of those types rather than as an inheritance.
- Money in tied to a life: a yearly stream marked as one person's drops to the survivor percentage you set at that person's plan end age (a single-life pension to 0%, a joint-and-survivor election to 50/75%). Streams left on "Household" pay for their whole age range regardless of deaths — so a household-labeled single-life pension overstates survivor income; the annuity exclusion ratio (the tax-free return-of-basis portion of a non-qualified annuity) is not modeled, the cautious direction.
- Roth conversions are measured from a plan you enter, not optimized for you — the conversion "bracket headroom" ZBee shows does account for the Social Security "tax torpedo."
ZBee assumes the United States throughout, and measures the most you can sustainably spend given your current situation and the choices you make — it does not recommend moves to improve it.
How we verify this
Every calculation above is covered by an automated validation suite that reproduces worked examples from the cited sources — the bracket math, the capital-gains stacking, the Social Security taxability worksheet, the IRMAA tiers, the RMD divisors, and the SSA claiming factors — and checks ZBee's output against them on every build. The figure you see is the one that math produces, not an approximation of it.
ZBee is a measurement and planning tool, not financial, tax, or legal advice. Projections are hypothetical estimates that will not match actual results. See the Disclaimer and Terms of Use.