{"id":43436,"date":"2026-07-06T15:35:15","date_gmt":"2026-07-06T19:35:15","guid":{"rendered":"https:\/\/hdmoneyinc.com\/?page_id=43436"},"modified":"2026-07-09T14:10:17","modified_gmt":"2026-07-09T18:10:17","slug":"coast-number-calculator","status":"publish","type":"page","link":"https:\/\/hdmoneyinc.com\/?page_id=43436","title":{"rendered":"Coast Number Calculator"},"content":{"rendered":"<style>\r\n  :root {\r\n    --navy: #1B3D6E;\r\n    --sky: #2E9DD4;\r\n    --light: #EFF2F4;\r\n    --border: #d3dce3;\r\n  }\r\n  * { box-sizing: border-box; margin: 0; padding: 0; }\r\n  body {\r\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n    background: var(--light);\r\n    color: #333;\r\n    padding: 32px 16px;\r\n    line-height: 1.5;\r\n  }\r\n  .wrap { max-width: 680px; margin: 0 auto; }\r\n  header { text-align: center; margin-bottom: 32px; }\r\n  header h1 { color: var(--navy); font-size: 2rem; font-weight: 800; letter-spacing: -0.5px; }\r\n  header p { color: #5a6672; margin-top: 8px; }\r\n  .card {\r\n    background: #fff; border-radius: 16px; padding: 24px;\r\n    box-shadow: 0 1px 4px rgba(27,61,110,0.08); margin-bottom: 24px;\r\n  }\r\n  h2 { color: var(--navy); font-size: 1.1rem; font-weight: 700; margin-bottom: 16px; display: flex; align-items: center; gap: 10px; }\r\n  h2 .step {\r\n    background: var(--sky); color: #fff; width: 28px; height: 28px; border-radius: 50%;\r\n    display: inline-flex; align-items: center; justify-content: center;\r\n    font-size: 0.85rem; flex-shrink: 0;\r\n  }\r\n  h2 small { color: #9aa5af; font-weight: 400; font-size: 0.85rem; }\r\n  .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }\r\n  .grid-3 { grid-template-columns: 1fr 1fr 1fr; }\r\n  @media (max-width: 560px) { .grid, .grid-3 { grid-template-columns: 1fr; } }\r\n  label { display: block; }\r\n  label span.lbl { display: block; font-size: 0.85rem; font-weight: 600; color: var(--navy); margin-bottom: 4px; }\r\n  .input {\r\n    display: flex; align-items: center; background: #fff;\r\n    border: 1px solid var(--border); border-radius: 10px; padding: 9px 12px;\r\n  }\r\n  .input:focus-within { border-color: var(--sky); box-shadow: 0 0 0 3px rgba(46,157,212,0.18); }\r\n  .input .fix { color: #9aa5af; user-select: none; }\r\n  .input .fix.pre { margin-right: 4px; }\r\n  .input .fix.suf { margin-left: 4px; }\r\n  .input input {\r\n    border: none; outline: none; width: 100%; font-size: 1rem; color: #333;\r\n    background: transparent; min-width: 0;\r\n  }\r\n  .callout {\r\n    margin-top: 14px; background: var(--light); border-radius: 10px;\r\n    padding: 12px 16px; font-size: 0.9rem; color: var(--navy);\r\n  }\r\n  .results { margin-top: 20px; background: var(--light); border-radius: 10px; padding: 6px 16px; }\r\n  .row {\r\n    display: flex; justify-content: space-between; align-items: center;\r\n    padding: 9px 0; border-bottom: 1px solid #e2e8ee; font-size: 0.9rem;\r\n  }\r\n  .row:last-child { border-bottom: none; }\r\n  .row .val { font-weight: 700; color: var(--navy); }\r\n  .row.hl .val { color: var(--sky); }\r\n  .btn-add {\r\n    margin-top: 16px; background: var(--sky); color: #fff; border: none;\r\n    border-radius: 10px; padding: 10px 16px; font-size: 0.9rem; font-weight: 600;\r\n    cursor: pointer; transition: opacity 0.15s;\r\n  }\r\n  .btn-add:hover { opacity: 0.9; }\r\n  .extra-row { display: flex; gap: 12px; align-items: flex-end; margin-top: 16px; }\r\n  .extra-row > div { flex: 1; }\r\n  .btn-remove {\r\n    background: #b0bcc7; color: #fff; border: none; border-radius: 10px;\r\n    width: 38px; height: 38px; font-size: 1.1rem; font-weight: 700;\r\n    cursor: pointer; flex-shrink: 0; margin-bottom: 1px;\r\n  }\r\n  .warn { color: #c0392b; font-size: 0.85rem; margin-top: 12px; display: none; }\r\n  .result-card {\r\n    background: var(--navy); border-radius: 16px; padding: 36px 24px;\r\n    text-align: center; color: #fff; margin-bottom: 24px;\r\n    box-shadow: 0 4px 14px rgba(27,61,110,0.25);\r\n  }\r\n  .result-card .eyebrow {\r\n    color: var(--sky); text-transform: uppercase; letter-spacing: 3px;\r\n    font-size: 0.8rem; font-weight: 700;\r\n  }\r\n  .result-card .number { font-size: 2.8rem; font-weight: 800; margin: 12px 0; }\r\n  @media (max-width: 560px) { .result-card .number { font-size: 2.1rem; } }\r\n  .result-card .explain { color: #cfe2f0; max-width: 440px; margin: 0 auto; font-size: 0.95rem; }\r\n  .result-card .explain strong { color: #fff; }\r\n  footer { text-align: center; font-size: 0.75rem; color: #7c8792; padding: 0 16px; }\r\n<\/style>\r\n<div class=\"wrap\">\r\n  <header>\r\n    <h1>Coast Number Calculator<\/h1>\r\n    <p>Find out how much you need saved <em>today<\/em> to coast into retirement \u2014 no more contributions required.<\/p>\r\n  <\/header>\r\n\r\n  <!-- Step 1 -->\r\n  <section class=\"card\">\r\n    <h2><span class=\"step\">1<\/span> Your Retirement Budget<\/h2>\r\n    <label>\r\n      <span class=\"lbl\">Monthly budget needed in retirement<\/span>\r\n      <span class=\"input\"><span class=\"fix pre\">$<\/span><input id=\"monthlyBudget\" inputmode=\"decimal\" value=\"8000\"><\/span>\r\n    <\/label>\r\n    <div class=\"callout\">That's <strong id=\"annualBudget\">$96,000<\/strong> per year.<\/div>\r\n  <\/section>\r\n\r\n  <!-- Step 2 -->\r\n  <section class=\"card\">\r\n    <h2><span class=\"step\">2<\/span> Guaranteed Income Sources <small>(annual)<\/small><\/h2>\r\n    <div class=\"grid\">\r\n      <label>\r\n        <span class=\"lbl\">Social Security \u2014 Spouse 1<\/span>\r\n        <span class=\"input\"><span class=\"fix pre\">$<\/span><input id=\"ss1\" inputmode=\"decimal\" value=\"30000\"><\/span>\r\n      <\/label>\r\n      <label>\r\n        <span class=\"lbl\">Social Security \u2014 Spouse 2<\/span>\r\n        <span class=\"input\"><span class=\"fix pre\">$<\/span><input id=\"ss2\" inputmode=\"decimal\" value=\"24000\"><\/span>\r\n      <\/label>\r\n      <label>\r\n        <span class=\"lbl\">Pension or other guaranteed income<\/span>\r\n        <span class=\"input\"><span class=\"fix pre\">$<\/span><input id=\"pension\" inputmode=\"decimal\" value=\"0\"><\/span>\r\n      <\/label>\r\n    <\/div>\r\n    <div id=\"extraSources\"><\/div>\r\n    <button class=\"btn-add\" id=\"addSource\">+ Add another income source<\/button>\r\n    <div class=\"results\">\r\n      <div class=\"row\"><span>Total guaranteed income<\/span><span class=\"val\" id=\"totalGuaranteed\">$0<\/span><\/div>\r\n      <div class=\"row\"><span>Annual gap from portfolio<\/span><span class=\"val\" id=\"gap\">$0<\/span><\/div>\r\n      <div class=\"row hl\"><span>Target portfolio needed (gap \u00d7 25)<\/span><span class=\"val\" id=\"target\">$0<\/span><\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- Step 3 -->\r\n  <section class=\"card\">\r\n    <h2><span class=\"step\">3<\/span> Your Timeline<\/h2>\r\n    <div class=\"grid grid-3\">\r\n      <label>\r\n        <span class=\"lbl\">Current age<\/span>\r\n        <span class=\"input\"><input id=\"currentAge\" inputmode=\"decimal\" value=\"50\"><\/span>\r\n      <\/label>\r\n      <label>\r\n        <span class=\"lbl\">Planned retirement age<\/span>\r\n        <span class=\"input\"><input id=\"retireAge\" inputmode=\"decimal\" value=\"65\"><\/span>\r\n      <\/label>\r\n      <label>\r\n        <span class=\"lbl\">Expected annual return<\/span>\r\n        <span class=\"input\"><input id=\"annualReturn\" inputmode=\"decimal\" value=\"7\"><span class=\"fix suf\">%<\/span><\/span>\r\n      <\/label>\r\n    <\/div>\r\n    <p class=\"warn\" id=\"ageWarn\">Retirement age should be greater than your current age.<\/p>\r\n  <\/section>\r\n\r\n  <!-- Result -->\r\n  <section class=\"result-card\">\r\n    <p class=\"eyebrow\">Your Coast Number<\/p>\r\n    <p class=\"number\" id=\"coastNumber\">$0<\/p>\r\n    <p class=\"explain\" id=\"explain\"><\/p>\r\n  <\/section>\r\n\r\n  <footer>\r\n    This calculator is for educational purposes only and does not constitute personalized\r\n    financial advice. Contact HD Money Inc. for a personalized retirement plan.\r\n  <\/footer>\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  var $ = function (id) { return document.getElementById(id); };\r\n  var extraCount = 0;\r\n\r\n  function toNum(v) {\r\n    var n = parseFloat(String(v).replace(\/[^0-9.\\-]\/g, \"\"));\r\n    return isNaN(n) ? 0 : n;\r\n  }\r\n  function fmt(n) {\r\n    if (!isFinite(n) || isNaN(n)) n = 0;\r\n    return n.toLocaleString(\"en-US\", { style: \"currency\", currency: \"USD\", maximumFractionDigits: 0 });\r\n  }\r\n\r\n  function calc() {\r\n    var annualBudget = toNum($(\"monthlyBudget\").value) * 12;\r\n    var guaranteed = toNum($(\"ss1\").value) + toNum($(\"ss2\").value) + toNum($(\"pension\").value);\r\n    document.querySelectorAll(\"#extraSources input[data-amount]\").forEach(function (inp) {\r\n      guaranteed += toNum(inp.value);\r\n    });\r\n    var gap = Math.max(0, annualBudget - guaranteed);\r\n    var target = gap * 25;\r\n\r\n    var age = toNum($(\"currentAge\").value);\r\n    var retire = toNum($(\"retireAge\").value);\r\n    var years = Math.max(0, retire - age);\r\n    var r = toNum($(\"annualReturn\").value) \/ 100;\r\n    var coast = (years > 0 && r > -1) ? target \/ Math.pow(1 + r, years) : target;\r\n\r\n    $(\"annualBudget\").textContent = fmt(annualBudget);\r\n    $(\"totalGuaranteed\").textContent = fmt(guaranteed);\r\n    $(\"gap\").textContent = fmt(gap);\r\n    $(\"target\").textContent = fmt(target);\r\n    $(\"coastNumber\").textContent = fmt(coast);\r\n    $(\"ageWarn\").style.display = retire <= age ? \"block\" : \"none\";\r\n\r\n    if (gap === 0) {\r\n      $(\"explain\").innerHTML =\r\n        \"Your guaranteed income fully covers your retirement budget \u2014 you may not need portfolio withdrawals at all.\";\r\n    } else {\r\n      $(\"explain\").innerHTML =\r\n        \"If you have <strong>\" + fmt(coast) + \"<\/strong> saved today, you could stop contributing \" +\r\n        \"and still reach your retirement goal by age <strong>\" + (retire || \"\u2014\") + \"<\/strong>.\";\r\n    }\r\n  }\r\n\r\n  $(\"addSource\").addEventListener(\"click\", function () {\r\n    extraCount++;\r\n    var row = document.createElement(\"div\");\r\n    row.className = \"extra-row\";\r\n    row.innerHTML =\r\n      '<div><label><span class=\"lbl\">Source name<\/span>' +\r\n      '<span class=\"input\"><input type=\"text\" placeholder=\"e.g., Rental income\"><\/span><\/label><\/div>' +\r\n      '<div><label><span class=\"lbl\">Annual amount<\/span>' +\r\n      '<span class=\"input\"><span class=\"fix pre\">$<\/span><input inputmode=\"decimal\" data-amount placeholder=\"0\"><\/span><\/label><\/div>' +\r\n      '<button class=\"btn-remove\" aria-label=\"Remove income source\">&times;<\/button>';\r\n    row.querySelector(\".btn-remove\").addEventListener(\"click\", function () {\r\n      row.remove();\r\n      calc();\r\n    });\r\n    row.querySelectorAll(\"input\").forEach(function (inp) {\r\n      inp.addEventListener(\"input\", calc);\r\n    });\r\n    $(\"extraSources\").appendChild(row);\r\n  });\r\n\r\n  document.querySelectorAll(\"input\").forEach(function (inp) {\r\n    inp.addEventListener(\"input\", calc);\r\n  });\r\n\r\n  calc();\r\n})();\r\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":17,"featured_media":43459,"parent":647,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-43436","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/hdmoneyinc.com\/index.php?rest_route=\/wp\/v2\/pages\/43436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hdmoneyinc.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hdmoneyinc.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hdmoneyinc.com\/index.php?rest_route=\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/hdmoneyinc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=43436"}],"version-history":[{"count":4,"href":"https:\/\/hdmoneyinc.com\/index.php?rest_route=\/wp\/v2\/pages\/43436\/revisions"}],"predecessor-version":[{"id":43486,"href":"https:\/\/hdmoneyinc.com\/index.php?rest_route=\/wp\/v2\/pages\/43436\/revisions\/43486"}],"up":[{"embeddable":true,"href":"https:\/\/hdmoneyinc.com\/index.php?rest_route=\/wp\/v2\/pages\/647"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hdmoneyinc.com\/index.php?rest_route=\/wp\/v2\/media\/43459"}],"wp:attachment":[{"href":"https:\/\/hdmoneyinc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=43436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}