Changelog
Every change that affects what a calculator computes, dated and explained — not just that a number moved, but which direction and why. A number you saved from a calculator last month may not reproduce exactly if a fix below changed how it's computed; that's the tradeoff of fixing a bug instead of quietly leaving it.
Fixed
2026-08-12
Rent vs. Buy kept charging a mortgage payment after the loan was paid off
When your loan term was shorter than how long you planned to stay (e.g. a 15-year loan on a 30-year stay), the simulation kept subtracting the monthly principal-and-interest payment from the owner's cash flow indefinitely after the mortgage was actually retired. That phantom cost flowed into the comparison as if the owner were still paying a loan that no longer existed, which made renting look better than it should have for every year past payoff. Direction of the fix: owning's projected net worth moves UP (and renting's moves down) in any scenario where the loan term is shorter than the stay duration — the longer the gap, the bigger the swing. Scenarios where the loan term matches or exceeds the stay duration are unaffected.
2026-08-12
Compound Interest under-simulated fractional time horizons
A time horizon like 10.5 years was only simulated for 120 whole months, but contributions were counted for the full 126 months (10.5 × 12) implied by the horizon — so growth silently stopped 6 months early while the contribution count kept going. Direction of the fix: futureValue and totalInterest move UP for any fractional horizon, since the missing 6 months of growth are now included; totalContributions is unchanged, since it was always counted correctly — only the simulated growth was short. Whole-year horizons are unaffected. The input that would trigger this isn't reachable through the current UI (the time horizon field only accepts whole-year steps), so this had no live user-facing impact — it's an engine-correctness fix ahead of that field ever loosening.
Every changed figure in these entries is justified in the underlying commit message — see our methodology page for the conventions themselves.