Pensions & Annuities

How the main retirement projection models a guaranteed-income stream, how it is taxed and how it offsets spending — and how the standalone Annuity and Pension-vs-Lump-Sum calculators are separate tools that do not feed the projection.

Overview

SmartRetireCalc handles pensions and annuities in three unrelated places: the main retirement projection (one or more independent guaranteed-income streams), the standalone Annuity Income Calculator (what an annuity purchase might pay), and the standalone Pension vs Lump Sum Calculator (a monthly-pension vs. buyout comparison). The two standalone calculators are decision-support tools — neither one writes anything into the retirement projection.

In the projection there is no separate “pension” field. An employer pension and a purchased income annuity are entered the same way — each as its own stream with its own start age, COLA setting, and taxable portion. The projection does not otherwise distinguish the two.

Where pension & annuity income is entered

In the retirement calculator, guaranteed income other than Social Security is entered as an annuity-type account on the Accounts step. Each annuity account carries an annual income amount, a start age, a cost-of-living toggle, and an optional taxable-portion amount. Every non-excluded annuity account with a positive income becomes its own independent stream for the engine:

  • Each stream keeps its own start age (defaulting to your retirement age when blank) — a pension starting at 65 and a QLAC starting at 80 are modeled with the correct timing, not merged to the earliest age.
  • Each stream keeps its own COLA flag — a COLA pension alongside a level annuity grows only the pension.
  • Each stream keeps its own taxable treatment — a fully-taxable employer pension and a partially-taxable non-qualified annuity are never blended into one figure.
  • The projection year’s total pension/annuity income is the sum of the streams active that year.
An annuity account is not the same as annuity income. The account’s balance / asset value is net-worth-only — it is never withdrawn from. It is the account’s annual income field that creates a guaranteed-income stream. An annuity account with a $0 income amount contributes nothing to the projection’s cash flow. See Accounts.

Pension & annuity income in the projection

Once a projection year reaches a stream’s own start age, that stream’s income is paid every year for the rest of the projection — it never stops, steps down, or switches to a survivor amount. Each stream is evaluated separately and the results are added:

colaFactori = streami.HasCola ? (1 + Inflation)(age − streami.startAge) : 1
annuityIncome(age) = Σi [ age ≥ streami.startAge ] × streami.AnnualIncome × colaFactori

A stream contributes nothing before its own start age, and its COLA compounds only from that start age — so a delayed stream shows no premature income and no premature COLA growth. Each stream’s COLA exponent is zero in its first year (income is paid at the entered amount), then compounds. The COLA rate is exactly the plan’s inflation assumption — there is no separate annuity-COLA input, and the choice is all-or-nothing: either the payment tracks full inflation or it stays flat in nominal dollars forever. A real 1–3% capped COLA cannot be modeled.

How guaranteed income offsets spending

Guaranteed income first reduces the amount that has to be withdrawn from the portfolio. Each retirement year:

portfolioNeed = max(0, Spending + LoanPayments − SocialSecurity − TotalAnnuityIncome)

When guaranteed income is more than the year’s spending + loan need, the surplus is not lost. It first pays that year’s federal tax and IRMAA bill (so the model no longer has to gross up a pre-tax withdrawal to cover a tax that the pension check already covers), and whatever is left is retained in the taxable brokerage bucket — the same way an excess RMD is. The deposit is not itself taxed; the underlying Social Security / pension taxation is unchanged. Guaranteed income received before your retirement age does not offset the (informational) pre-retirement spending figure, but it is still taxed under the normal rules and its after-tax cash is likewise retained in the taxable bucket rather than disappearing.

Where it sits in the annual order

Guaranteed income (Social Security + pension/annuity) is applied first, before any account is touched. Only the remaining gap runs through the withdrawal waterfall:

  1. Social Security + pension/annuity income offset the spending need
  2. Required Minimum Distributions (forced from pre-tax)
  3. Savings → taxable → non-deductible IRA → pre-tax → spouse pre-tax → Roth
  4. The federal tax + IRMAA bill is funded from the year’s guaranteed-income surplus first, then pre-tax, then Roth
  5. Any guaranteed-income surplus left after the tax bill is retained in the taxable bucket

See Projection Engine for the full order and Accounts for the waterfall.

Tax treatment

By default the entire pension/annuity payment is treated as taxable ordinary income for the year (the correct treatment for an employer pension or a pre-tax-funded / qualified annuity, per IRS Publication 575). If you enter a taxable-portion amount on an annuity account, only that smaller figure is taxed — this is how a non-qualified annuity with a partial return-of-principal is approximated. Each stream’s taxable portion is scaled by that stream’s own COLA factor and capped at that stream’s own gross payment; the year’s taxable pension/annuity income is the sum across streams.

  • SmartRetireCalc does not compute an IRS §72 exclusion ratio — you supply the taxable amount directly, or it defaults to 100%.
  • There is no explicit “qualified vs. non-qualified” or “Roth-funded annuity” setting — those are expressed only through the taxable-portion number.
  • The taxable portion is folded into ordinary income before the Social Security taxability calculation, so it can raise how much of your Social Security is taxed.
  • It is part of the modeled MAGI, so it can push you into a higher Medicare IRMAA tier and it reduces the headroom the Fill-to-Bracket / Fill-to-IRMAA Roth-conversion solvers have to work with.
  • State income tax on pension/annuity income is not modeled — federal only. See Taxes.

Interaction with RMDs and Roth conversions

Pension/annuity income is not an account balance, so it is never subject to RMDs and is never a Roth-conversion source. Its only interaction with those mechanics is through taxable income: a larger taxable pension/annuity amount raises your ordinary income and MAGI for the year, which lowers how much can be converted under the bracket- and IRMAA-targeting strategies.

Spouse and survivor handling

Each pension/annuity stream keeps its own start age, COLA setting, and taxable portion, but streams are not split by owner — a stream is not tied to a particular spouse, a spouse’s age does not change it, and it does not step down when one spouse dies. Survivor-option reductions (50%/75%/100% joint-and-survivor) are not modeled. If you expect a survivor reduction, enter the post-reduction amount.

How it appears in results

Each projection year reports the gross annuity/pension income received and its federally-taxable portion as their own figures. The row’s “income” headline is Social Security only; pension/annuity income shows separately. The taxable portion is included in that year’s ordinary income and MAGI figures.

The standalone Annuity Income Calculator

The Annuity Income Calculator estimates monthly income from three annuity types — SPIA, DIA, and QLAC — from a premium, current age, gender, and income start age. It is computed server-side by RetireCalc.Engine.Annuities.AnnuityEstimator. It is standalone: its output never populates the retirement projection.

SPIA — Single Premium Immediate Annuity

Income is a lookup from a hardcoded payout-rate table derived from mid-2025 insurer quotes for life-only contracts (no period-certain or survivor option), by age and gender.

MonthlyIncome = Premium × AnnualPayoutRate(age, gender) ÷ 12
BreakEvenAge = PurchaseAge + (1 ÷ AnnualPayoutRate)

DIA — Deferred Income Annuity

Two multipliers are applied to the premium before the SPIA rate at the income start age: an accumulation factor (a fixed 4.5% annual insurer crediting rate over the deferral period) and a mortality credit (divide by the probability of surviving from purchase age to start age).

EffectivePremium = Premium × (1.045)deferralYears ÷ SurvivalProbability
MonthlyIncome = EffectivePremium × SPIARate(startAge, gender) ÷ 12
BreakEvenAge = StartAge + (Premium ÷ AnnualIncome)

The DIA/QLAC break-even age is measured from when income begins and uses the buyer’s actual cash premium divided by the actual annual payment — i.e. the age at which level payments have returned what was paid in. (QLAC uses the same formula on the premium after the QLAC limit is applied.)

QLAC — Qualifying Longevity Annuity Contract

Calculated like a DIA, with the premium capped at the aggregate QLAC premium limit set by SECURE 2.0 §202 (a flat dollar amount, indexed for inflation — $210,000 for 2026; the pre-2023 “25% of balance” alternative is repealed). The calculator applies whatever limit the admin site-constants currently hold, and also shows the RMD the QLAC premium would defer, using the IRS Uniform Lifetime Table divisors.

The Annuity Income Calculator models no taxes, no fees, and no inflation (payments are level unless you compare different start ages). Estimates are illustrative — real insurer quotes depend on current interest rates, your state, the insurer, and payout options.

The standalone Pension vs Lump Sum Calculator

The Pension vs Lump Sum Calculator compares taking a monthly pension against a lump-sum buyout. From a monthly pension, a lump sum, a start age, a life expectancy, an investment return, and a pension COLA, it walks year by year to the life-expectancy age:

cumulativePensiony = Σ (Annual pension, escalated by COLA each year)
lumpValuey = LumpSum × (1 + InvestmentReturn)y
break-even = first year cumulativePension > lumpValue
recommendation = “Pension” if totalPension > totalLump at life expectancy, else “Lump sum”
This comparison is in nominal dollars — there is no present-value discounting and no inflation adjustment of the totals. It uses a single fixed life expectancy, not a mortality distribution or a probability of outliving the lump sum. It models no taxes and no survivor benefit. The headline recommendation is decided by the two totals at your life expectancy; the reported break-even age is the first year the cumulative pension pulls ahead, which a high enough investment return can later reverse. It is a directional decision aid, not a plan — and it does not feed the retirement projection.

Important modeling limitations

  • Each pension/annuity account is its own stream (own start age, COLA flag, and taxable portion), but streams are not tied to a specific person.
  • Per stream, COLA is all-or-nothing at the full inflation rate; a capped/partial COLA cannot be modeled.
  • No survivor-option reduction, no benefit end date, no deferral bonus inside the projection.
  • Taxation is either 100% or a flat user-entered amount — no §72 exclusion ratio, no state tax.
  • Guaranteed income above the year’s spending need pays that year’s tax bill first, then the remainder is retained in the taxable bucket (it is not spent down or optimized further).
  • The Annuity and Pension-vs-Lump-Sum calculators are standalone illustrations and never write into the retirement projection.

Background sources

  • IRS Publication 575 — pension and annuity income taxation — the basis for the fully-taxable default
  • IRS Publication 939 — the General Rule for pensions and annuities (§72 exclusion ratio — noted as not modeled)
  • SECURE 2.0 Act of 2022 §202 — the flat, inflation-indexed QLAC premium limit ($210,000 for 2026) used by the Annuity Income Calculator

These describe real-world rules for context. Where SmartRetireCalc simplifies — the exclusion ratio, survivor options, state tax — the simplification is called out above.

Related guides: Pension vs Lump Sum Guide · Annuities Guide · Guaranteed Income Guide