Runs two identical scenarios — both with source = 'ira' — at $100K/yr and $1M/yr. If the engine honors the "IRA Only" setting, the Roth column should stay $0 until the IRA is fully depleted in both cases.
No console required. Take a screenshot of this page and send it back — it tells me exactly which path the bug is on.
Withdrawal: $100,000/yr · Ages 73–94 · Source = IRA Only
| Age | IRA BoY | Roth BoY | IRA Wd | Roth Wd |
|---|---|---|---|---|
| 73 | $3,378,958 | $1,689,479 | $100,000 | $0 |
| 74 | $3,475,695 | $1,790,848 | $100,000 | $0 |
| 75 | $3,578,237 | $1,898,299 | $0 | $0 |
| 76 | $3,638,747 | $2,012,196 | $0 | $0 |
| 80 | $3,826,236 | $2,540,352 | $0 | $0 |
| 85 | $3,874,577 | $3,399,564 | $0 | $0 |
| 90 | $3,613,702 | $4,549,383 | $0 | $0 |
| 94 | $3,126,424 | $5,743,491 | $0 | $0 |
{
"schemaVersion": 3,
"streams": [
{
"id": "ira_only",
"priority": 1,
"disabled": false,
"label": "IRA Only — $100,000/yr",
"mode": "specified",
"amount": 100000,
"startAge": 73,
"endAge": 94,
"frequency": "annual",
"source": "ira",
"useSmartLogic": false,
"inflationAdjusted": false,
"inflationStartAmount": 0,
"durationMode": "age_window",
"fallbackMode": "none",
"splitMode": "none",
"splitIraPct": 50,
"splitRothPct": 50,
"splitIraDollar": 0,
"splitRothDollar": 0
}
]
}Withdrawal: $1,000,000/yr · Ages 73–94 · Source = IRA Only
| Age | IRA BoY | Roth BoY | IRA Wd | Roth Wd |
|---|---|---|---|---|
| 73 | $3,378,958 | $1,689,479 | $1,000,000 | $0 |
| 74 | $2,521,695 | $1,790,848 | $1,000,000 | $0 |
| 75 | $1,612,997 | $1,898,299 | $934,431 | $0 |
| 76 | $649,777 | $2,012,196 | $622,360 | $350,223 |
| 80 | $0 | $0 | $0 | $0 |
| 85 | $0 | $0 | $0 | $0 |
| 90 | $0 | $0 | $0 | $0 |
| 94 | $0 | $0 | $0 | $0 |
{
"schemaVersion": 3,
"streams": [
{
"id": "ira_only",
"priority": 1,
"disabled": false,
"label": "IRA Only — $1,000,000/yr",
"mode": "specified",
"amount": 1000000,
"startAge": 73,
"endAge": 94,
"frequency": "annual",
"source": "ira",
"useSmartLogic": false,
"inflationAdjusted": false,
"inflationStartAmount": 0,
"durationMode": "age_window",
"fallbackMode": "none",
"splitMode": "none",
"splitIraPct": 50,
"splitRothPct": 50,
"splitIraDollar": 0,
"splitRothDollar": 0
}
]
}