{"id":15204,"date":"2026-01-28T02:04:47","date_gmt":"2026-01-28T02:04:47","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=15204"},"modified":"2026-02-20T04:35:16","modified_gmt":"2026-02-20T04:35:16","slug":"project-cost-overrun","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/","title":{"rendered":"Cost Overrun: Definition, Causes and How To Prevent It"},"content":{"rendered":"<p>A project can look on track on paper, yet still bleed money through small leaks, scope changes without cost approval, rushed procurement, rework, and delayed sign-offs. When these issues stack up, cost overruns stop being a budget line item and become a profitability problem that leadership has to solve under pressure.<\/p>\n<p>For project owners, finance leaders, and operations managers, the challenge is rarely the formula, it is maintaining control when timelines shift, vendors change, and multiple teams report different numbers. That is why cost overrun prevention needs clear governance: a realistic baseline, strict change control, frequent variance checks, and accountability for decisions that create cost.<\/p>\n<p>This guide explains what a cost overrun is, why it happens, the early warning signs to watch for, and practical steps to prevent and recover from overruns. It also explains how modern project systems provide stronger cost visibility and faster decision-making, ensuring projects remain predictable and financially defensible.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #8a0e19; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#is\">Cost overrun is more than overspending<\/a>; it signals gaps in estimation, scope control, or execution that can erode margin and disrupt cash flow if not detected early.<\/li>\n<li aria-level=\"1\"><a href=\"#prevent\">Prevention works best<\/a> when teams enforce WBS-based budgeting, strict change control, and weekly variance reviews, so small deviations are corrected before they become structural overruns.<\/li>\n<li aria-level=\"1\"><a href=\"#recommendation\">Integrated systems<\/a> help reduce budget blowouts by aligning budgeting, procurement, approvals, and financial tracking into one source of truth, making commitments and actual costs easier to monitor in real time.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tTable of Content\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Content Lists<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<!-- TOC mobile -->\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Table of Content<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n<!-- TOC mobile -->\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\t\t\t\t\r\n\t}\r\n\r\n<\/style>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- START ToC styling  -->\r\n<style>\r\n\t\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n<!-- END ToC styling  -->\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 700;\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\tconst panel2 = document.querySelector(\"#toc .list\");\r\n\tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n  let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n  \/\/ Function to handle scroll and add\/remove .sticky class\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Highlight user progress as the heading comes\r\n    headers.forEach(header => {\r\n\t\tconst headerTop = header.offsetTop;\r\n\t\tconst headerHeight = header.clientHeight;\r\n\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\t\t\ttocTitle.textContent = currentHeaderText;\r\n\t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\ttocTitle.textContent = 'Table of Content';\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader != '') {\r\n\t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\t\t\t  link.classList.add('active');\r\n\t\t  }\r\n\t  }\r\n    });\r\n\/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/         toc.style.display = 'block';\r\n\/\/ \t}else{\r\n\/\/         toc.style.display = 'none';\r\n\/\/ \t}\r\n    \/\/ Update TOC title if sticky\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n        toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n        toc.style.backgroundColor = \"#FFF\";\r\n\t\tpanel2.style.height = '0px';\r\n\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t  if(window.innerWidth < 767){\r\n\/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n       \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\t\t  }\r\n      }\r\n      if (currentHeader) {\r\n\/\/         console.log(\"activeLink:\", activeLink);\r\n        if (activeLink) {\r\n\/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n          tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n        }\r\n      }\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset'; \/\/ Reset to original width\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\t\ticon.style.transform = \"rotate(180deg)\";\r\n    }\r\n  }\r\n\r\n    \/\/ Attach the scroll event listener to the window\r\n    window.addEventListener('scroll', handleScroll);\r\n\r\n    \/\/ Initial call to handleScroll to set the correct state on load\r\n    handleScroll();\r\n});\r\n\t\r\n\t\/\/ Open toggle TOC\r\n\t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\t\tvar toc = document.querySelector(\"#toc\");\r\n\t\tvar icon = document.querySelector(\".toc-icon\");\r\n\t\tconst tocTitle = document.querySelector('#toc-title');\r\n\t\tconst tocs = document.querySelector('#toc.sticky');\r\n \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\t\t  tocHeader.addEventListener(\"click\", function() {\r\n\t\t\tvar panel = this.nextElementSibling;\r\n\t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\t\t\t\tif(window.innerWidth > 768){\r\n\t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\t\t\t\t}\r\n\t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\t\t\t} else {\r\n\t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\t\t\ttoc.style.paddingBottom = '24px';\r\n\t\t\t \tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t  });\r\n\r\n\t\t  \/\/ Close TOC when a link inside it is clicked\r\n\t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\t\t  tocLinks.forEach(function(link) {\r\n\t\t\tlink.addEventListener(\"click\", function() {\r\n\t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t});\r\n\t\t  });\r\n\t\t});\r\n<\/script>\r\n\r\n<!-- <script>\r\n\tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\t\tdropdownFixedTop.addEventListener('click', function() {\r\n\t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\t\t\tdropdownContent.classList.toggle('show');\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('click', function(event) {\r\n\t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\t\t\t\tlistTocTop.classList.remove('show');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\t\r\n\tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n    var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n    window.addEventListener('scroll', function() {\r\n        if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(false);\r\n            triggered = true;\r\n        } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(true);\r\n            triggered = false;\r\n        }\r\n    });\r\n\r\n    function isCompletelyScrolledPast(element) {\r\n        var elementTop = element.getBoundingClientRect().top;\r\n        var elementBottom = element.getBoundingClientRect().bottom;\r\n        return elementTop < 0 && elementBottom < 0;\r\n    }\r\n\r\n    function showSectionDropdownFixedTop(show) {\r\n\t\tif (show) {\r\n\t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\t\t} else {\r\n\t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\t\t}\r\n    }\r\n\r\n\/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n\t\t  pilihDaftarIsi.innerHTML = a.textContent;\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script> -->\r\n<!-- END script lama -->\r\n\t\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\t\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n        \/\/ Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif(element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Biar ga nampilin Key Takeaways di ToC\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\n\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\r\n\r\n\r\n\r\n\t\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<!-- \t<style>#toc_group_float{display:block !important}<\/style> -->\r\n\n<h2><strong>What Exactly is a Cost Overrun?<\/strong><\/h2>\n<p><span id=\"is\">A cost overrun happens when the actual cost of completing a project exceeds the budget that was initially planned. In practice, it is a project performance gap that signals breakdowns in estimation, scope control, execution, or external assumptions, not just a general \u201cbudget shortfall.\u201d<\/span><\/p>\n<p>A common way to quantify it is:<\/p>\n<blockquote><p><strong>Cost Overrun % = ((Actual Cost \u2212 Budgeted Cost) \/ Budgeted Cost) \u00d7 100%<\/strong><\/p><\/blockquote>\n<p>For example, if a project budget is 1,000,000 and actual cost becomes 1,150,000, the overrun is 15%, which makes it easier to track performance across projects and identify recurring drivers.<\/p>\n<h2><strong>Key Factors Causing Cost Overruns in Projects<\/strong><\/h2>\n<p>Budget blowouts are rarely triggered by a single event; they are the result of compounding structural issues. To prevent overspending, you must diagnose the root causes rather than merely treating the symptoms. Based on market analysis and common pitfalls in the Malaysian <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/construction-project-management\/\" target=\"_blank\" rel=\"noopener\">construction project management<\/a> landscape, here are the primary culprits:<\/p>\n<h3><strong>1. Flaws in the planning stage<\/strong><\/h3>\n<p>A project\u2019s financial failure is often sealed before the first brick is laid. Mistakes here set a flawed foundation that no amount of execution efficiency can fully correct.<\/p>\n<ul>\n<li><strong>Optimism bias in estimation:<\/strong> Managers often underestimate costs and timelines due to a lack of reliable historical data. Research by <a href=\"https:\/\/www.mckinsey.com\/capabilities\/operations\/our-insights\/the-construction-productivity-imperative\" target=\"_blank\" rel=\"noopener\">McKinsey<\/a> finds that 98% of megaprojects suffer cost overruns of more than 30% due to this initial bias.<\/li>\n<li><strong>Undefined scope &amp; design errors<\/strong>: Incomplete drawings or vague requirements inevitably lead to Scope Creep, the uncontrolled expansion of work without budget adjustments.<\/li>\n<li><strong>Regulatory and admin oversights:<\/strong> Failing to budget for specific Malaysian compliance costs (e.g., CIDB requirements, local council permits) or land acquisition legal fees often leaves a gap in the initial budget.<\/li>\n<\/ul>\n<h3><strong>2. Issues During Project Execution<\/strong><\/h3>\n<p>The gap between the &#8220;Plan&#8221; and &#8220;Site Reality&#8221; is where the budget leaks most profusely.<\/p>\n<ul>\n<li><strong>Low labor productivity:<\/strong> In Malaysia, challenges with unskilled labor or high turnover rates can extend timelines, directly inflating man-hour costs.<\/li>\n<li><strong>Inefficient resource management:<\/strong> Poor scheduling leads to operational downtime\u2014such as heavy machinery sitting idle or workers waiting for materials. This &#8220;silent burn&#8221; eats into profit margins daily.<\/li>\n<li><strong>Fragmented communication:<\/strong> When site teams, procurement, and finance operate in silos, it leads to duplicate orders, rework, and costly delays.<\/li>\n<\/ul>\n<h3><strong>3. Unforeseen External Factors<\/strong><\/h3>\n<p>While these factors are beyond your control, they must be accounted for in your risk assessment. A contingency fund (typically 10-20%) is essential to absorb these shocks.<\/p>\n<ul>\n<li><strong>Material price volatility:<\/strong> Fluctuations in global commodity prices (steel, cement, oil), often exacerbated by the Ringgit&#8217;s (MYR) performance, can render a fixed-price contract unprofitable overnight.<\/li>\n<li><strong>Environmental constraints:<\/strong> The monsoon season is a predictable &#8220;unforeseen&#8221; factor. Projects that fail to account for weather-related work stoppages will incur unavoidable penalties and overtime costs to catch up.<\/li>\n<li><strong>Economic &amp; policy shifts:<\/strong> Sudden changes in tax structures (like SST rate adjustments) or minimum wage mandates can instantly increase project overheads.<\/li>\n<\/ul>\n<h2><strong>The Negative Business Impacts of Cost Overrun<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-15218\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-scaled.webp\" alt=\"\" width=\"2560\" height=\"1396\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-scaled.webp 2560w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-300x164.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-1024x559.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-768x419.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-1536x838.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-2048x1117.webp 2048w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-770x420.webp 770w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-150x82.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-696x380.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-1068x583.webp 1068w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/project-cost-overrun-1920x1047.webp 1920w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>A cost overrun is more than a budget variance on a project spreadsheet, it can weaken profitability, decision-making, and operational stability across the business. When costs drift beyond plan, leadership often has to trade off speed, quality, and scope under pressure, which increases the likelihood of further inefficiencies.<\/p>\n<p>Over time, repeated overruns reduce stakeholder confidence and make future budgeting less credible because teams start padding estimates to \u201cprotect\u201d themselves. The result is a cycle where projects become harder to govern, less predictable to finance, and more stressful to execute.<\/p>\n<h3><strong>1. Decreased project profitability<\/strong><\/h3>\n<p>Cost overruns directly reduce margin because every unplanned dollar spent comes out of the <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/profit-margin\/\">project\u2019s expected profit<\/a>. If the contract price is fixed, the overrun is usually absorbed by the company, turning a profitable job into a breakeven or loss-making one.<\/p>\n<p>Even in cost-plus arrangements, higher costs can trigger disputes, approvals delays, or client pushback that slows billing and impacts cash collection. Over time, weaker project profitability limits reinvestment into hiring, equipment, and capability-building that supports growth.<\/p>\n<h3><strong>2. Damaged company reputation<\/strong><\/h3>\n<p>Consistent delivery within budget is often perceived by clients, partners, and investors as proof of operational discipline and reliability. Repeated overruns signal weak cost control, unclear governance, or poor risk management, which can reduce trust even if the final deliverables meet technical requirements.<\/p>\n<p>This reputation risk can affect bid competitiveness because clients may demand stricter terms, higher performance guarantees, or more frequent reporting. It can also complicate financing or partnerships if stakeholders view the company as higher-risk due to unpredictable project outcomes.<\/p>\n<h3><strong>3. Lowered team morale<\/strong><\/h3>\n<p>A project that repeatedly exceeds budget usually creates pressure cycles, urgent cost-cutting, blame, and constant re-prioritisation, rather than calm execution. Teams may feel exposed when they are asked to \u201cfix\u201d structural issues such as unclear scope, late decisions, or unrealistic baseline assumptions.<\/p>\n<p>This environment can reduce productivity because people spend more time firefighting, reworking, and explaining variances than delivering progress. Over time, sustained stress increases turnover risk and makes it harder to attract strong talent for future projects.<\/p>\n<h3><strong>4. Disrupted company cash flow<\/strong><\/h3>\n<p>Cost overruns often require unplanned funding to keep procurement, labour, and subcontractors moving, especially when payments are tied to milestones. If costs rise faster than billing, the company may face a short-term cash squeeze even when the project is technically \u201con track.\u201d<\/p>\n<p>This can delay supplier payments, interrupt purchasing, or force leadership to divert cash from other projects and operations. In severe situations, the business may need emergency financing, which increases borrowing costs and reduces financial flexibility.<\/p>\n<h2><strong>7 Strategies to Prevent Cost Overrun<\/strong><\/h2>\n<p><span id=\"prevent\">Cost overrun prevention is strongest when it is built into governance, not treated as a last-minute finance exercise. The most effective teams combine disciplined planning with weekly cost control habits, so variance is caught early and corrected before it becomes structural.<\/span><\/p>\n<style>\r\n  \/* Outer container: only handles horizontal scroll *\/\r\n  #custom-shortcode-scrollable-table {\r\n    width: 100%;\r\n    overflow-x: auto;\r\n  }\r\n  \/* Inner container: fixes vertical scroll visibility *\/\r\n  #custom-shortcode-scrollable-table .table-wrapper {\r\n    display: inline-block;\r\n    width: 130%;\r\n    vertical-align: top;\r\n  }\r\n  #custom-shortcode-scrollable-table table {\r\n    border-collapse: collapse;\r\n    table-layout: fixed;\r\n    width: 100%;\r\n  }\r\n  #custom-shortcode-scrollable-table thead {\r\n    background-color: #af2828;\r\n    color: #ffffff;\r\n    position: sticky;\r\n    top: 0;\r\n    z-index: 2;\r\n  }\r\n  #custom-shortcode-scrollable-table th {\r\n    font-size: 16px;\r\n  }\r\n  #custom-shortcode-scrollable-table td {\r\n    font-size: 14px;\r\n  }\r\n  #custom-shortcode-scrollable-table th:first-child,\r\n  #custom-shortcode-scrollable-table td:first-child {\r\n    width: 140px;\r\n  }\r\n  \r\n  \/* Styling khusus untuk type=\"check\" *\/\r\n    \r\n  \/* Scrollable tbody with visible vertical scrollbar *\/\r\n  #custom-shortcode-scrollable-table tbody {\r\n    display: block;\r\n    overflow-y: auto;\r\n    overflow-x: hidden;\r\n    width: 100%;\r\n    \/* max-height will be set dynamically *\/\r\n  }\r\n  #custom-shortcode-scrollable-table thead,\r\n  #custom-shortcode-scrollable-table tbody tr {\r\n    display: table;\r\n    width: 100%;\r\n    table-layout: fixed;\r\n  }\r\n  \/* Scrollbar styles for both x and y *\/\r\n  #custom-shortcode-scrollable-table::-webkit-scrollbar,\r\n  #custom-shortcode-scrollable-table tbody::-webkit-scrollbar {\r\n    width: 8px;\r\n    height: 8px;\r\n  }\r\n  #custom-shortcode-scrollable-table::-webkit-scrollbar-track,\r\n  #custom-shortcode-scrollable-table tbody::-webkit-scrollbar-track {\r\n    background: #f1f1f1;\r\n    border-radius: 4px;\r\n  }\r\n  #custom-shortcode-scrollable-table::-webkit-scrollbar-thumb,\r\n  #custom-shortcode-scrollable-table tbody::-webkit-scrollbar-thumb {\r\n    background: #af2828;\r\n    border-radius: 4px;\r\n  }\r\n  #custom-shortcode-scrollable-table::-webkit-scrollbar-thumb:hover,\r\n  #custom-shortcode-scrollable-table tbody::-webkit-scrollbar-thumb:hover {\r\n    background: #8a1f1f;\r\n  }\r\n  @media (max-width: 767px) {\r\n    #custom-shortcode-scrollable-table th {\r\n      font-size: 12px;\r\n    }\r\n    #custom-shortcode-scrollable-table td {\r\n      font-size: 10px;\r\n    }\r\n    #custom-shortcode-scrollable-table::-webkit-scrollbar,\r\n    #custom-shortcode-scrollable-table tbody::-webkit-scrollbar {\r\n      width: 6px;\r\n      height: 6px;\r\n    }\r\n      }\r\n<\/style>\r\n<div id=\"custom-shortcode-scrollable-table\">\r\n  <div class=\"table-wrapper\">\r\n    <table>\r\n      <thead>\r\n        <tr>\r\n                      <th>Strategy<\/th>\r\n                      <th>What to do<\/th>\r\n                      <th>How it prevents cost overrun<\/th>\r\n                  <\/tr>\r\n      <\/thead>\r\n      <tbody>\r\n                            <tr>\r\n                          <td><strong>Build a bottom-up cost estimate<\/strong><\/td>\r\n                          <td>Build a WBS and estimate each task using proven unit rates from similar projects (labour productivity, material usage, equipment hours). Validate major cost items with vendor quotes, include indirect costs, and set contingency based on the highest-impact risks.<\/td>\r\n                          <td>Removes hidden work and unrealistic assumptions early, so the budget reflects real scope and real market pricing<\/td>\r\n                      <\/tr>\r\n                            <tr>\r\n                          <td><strong>Lock scope early and run strict change control<\/strong><\/td>\r\n                          <td>Define deliverables, acceptance criteria, and exclusions clearly, then baseline with formal sign-off. Require every change request to show cost, schedule, and resource impact before approval, and log all approved variations in one register.<\/td>\r\n                          <td>Stops scope creep from adding cost silently and keeps the plan updated to the true committed scope<\/td>\r\n                      <\/tr>\r\n                            <tr>\r\n                          <td><strong>Maintain a risk register with owners and contingency logic<\/strong><\/td>\r\n                          <td>Maintain a live risk register with named owners, probability-impact scoring, early warning triggers, and mitigation actions. Allocate contingency to priority risks and review it weekly so mitigation happens before costs escalate.<\/td>\r\n                          <td>Turns uncertainty into planned action and prevents contingency from being consumed by unmanaged surprises<\/td>\r\n                      <\/tr>\r\n                            <tr>\r\n                          <td><strong>Track cost and progress frequently<\/strong><\/td>\r\n                          <td>Track actual costs and physical progress at least weekly against the baseline (commitments, actuals, forecast). Use variance thresholds to trigger immediate corrective actions such as re-planning, productivity resets, or scope reviews.<\/td>\r\n                          <td>Catches weekly drift early and prevents small variances from compounding into structural overruns<\/td>\r\n                      <\/tr>\r\n                            <tr>\r\n                          <td><strong>Control resource burn (labour, materials, equipment)<\/strong><\/td>\r\n                          <td>Set productivity targets upfront (output\/day, crew size, equipment hours) and compare actual usage to targets every week. Tighten material handling to reduce waste\/theft, improve inventory visibility, and treat schedule slippage as a cost driver that must be corrected fast.<\/td>\r\n                          <td>Prevents budget leakage from idle time, rework, wastage, and extended rentals\/overheads caused by delays<\/td>\r\n                      <\/tr>\r\n                            <tr>\r\n                          <td><strong>Strengthen procurement discipline and vendor governance<\/strong><\/td>\r\n                          <td>Standardise procurement workflows so quotes, PO approvals, delivery milestones, and contract terms are documented before spending happens. Confirm variation rules early, track vendor performance (delivery, quality, changes), and intervene quickly when issues emerge.<\/td>\r\n                          <td>Reduces overruns from price volatility, unclear terms, late deliveries, and expensive rework driven by vendor issues<\/td>\r\n                      <\/tr>\r\n                            <tr>\r\n                          <td><strong>Keep communication decision-focused with one source of truth<\/strong><\/td>\r\n                          <td>Set a fixed weekly cadence for cost and risk reviews where each meeting ends with decisions, owners, and deadlines. Use one source of truth for baseline, commitments, actuals, and forecast so teams act on the same numbers and approvals stay controlled.<\/td>\r\n                          <td>Eliminates conflicting data and informal approvals that trigger overtime, expediting costs, and rework<\/td>\r\n                      <\/tr>\r\n              <\/tbody>\r\n    <\/table>\r\n  <\/div>\r\n<\/div>\r\n<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n  const tbody = document.querySelector(\"#custom-shortcode-scrollable-table tbody\");\r\n  if (!tbody) return;\r\n  const rows = tbody.querySelectorAll(\"tr\");\r\n  if (rows.length > 10) {\r\n    let totalHeight = 0;\r\n    for (let i = 0; i < 10 && i < rows.length; i++) {\r\n      totalHeight += rows[i].offsetHeight;\r\n    }\r\n    tbody.style.maxHeight = totalHeight + \"px\";\r\n  }\r\n});\r\n<\/script>\n<h2><strong>The Role of Technology in Mitigating Cost Overruns<\/strong><\/h2>\n<p>Fast-moving projects often outgrow spreadsheets and scattered updates, creating errors and blind spots that delay cost variance detection. Purpose-built software centralises finance, procurement, progress, and approvals to automate workflows, improve visibility, and help teams act on commitments and actuals early before small issues escalate into budget blowouts.<\/p>\n<p>Here\u2019s a closer look at the critical role technology plays in mitigating the risk of budget blowouts.<\/p>\n<h3><strong>1. Construction software for accurate planning<\/strong><\/h3>\n<p>Modern construction software revolutionizes the planning phase by enabling the creation of highly accurate Cost Budgets (RAB) and With features like digital material takeoffs, you can calculate material requirements directly from architectural drawings, drastically reducing the risk of manual calculation errors.<\/p>\n<p>These platforms are often integrated with up-to-date material price databases, facilitating more realistic cost estimations and supporting a more competitive and accurate construction bidding process.<\/p>\n<h3><strong>2. ERP systems for centralized data visibility<\/strong><\/h3>\n<p>An integrated Enterprise Resource Planning (ERP) system serves as the central nervous system for efficient operations. By unifying data from disparate departments, such as finance, procurement, and project management, into a single database, an ERP system demolishes data silos.<\/p>\n<p>This provides unparalleled real-time visibility into every financial aspect of a project, from material requisitions to subcontractor payments. With this single source of truth, managers can effortlessly track actual expenditures against the budget and generate accurate reports without the tedious and error-prone process of manually consolidating data from multiple spreadsheets.<\/p>\n<h3><strong>3. Project management apps for team collaboration<\/strong><\/h3>\n<p>Modern project management applications facilitate seamless communication and collaboration among all team members, whether they are in the office or on the project site. Features such as task scheduling with a clear critical path, daily progress reporting, and centralized document sharing ensure everyone is working from the most current information.<\/p>\n<p>The ability to monitor construction progress remotely via mobile apps allows managers to identify and address issues almost instantly, minimizing downtime and preventing potential cost escalations.<\/p>\n<h3><strong>4. Accounting software for real-time financial tracking<\/strong><\/h3>\n<p>The integration of project management with accounting software is absolutely critical for effective cost control. Every expense incurred, from material purchases to labor wages, can be automatically recorded and allocated to the correct project and cost code.<\/p>\n<p>This enables <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/asset-tracking-software\/\">real-time tracking<\/a> of project profitability and simplifies the progressive billing process. With financial data always up to date, companies can maintain healthy cash flow and make more informed, timely financial decisions.<\/p>\n<h2><strong>Optimizing Project Control with Integrated Construction Solutions<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-15217\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overruns.webp\" alt=\"\" width=\"1154\" height=\"550\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overruns.webp 1154w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overruns-300x143.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overruns-1024x488.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overruns-768x366.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overruns-881x420.webp 881w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overruns-150x71.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overruns-696x332.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overruns-1068x509.webp 1068w\" sizes=\"(max-width: 1154px) 100vw, 1154px\" \/><\/p>\n<p>To prevent cost overruns, spreadsheets and disconnected tools are rarely enough, modern projects need finance, site progress, and procurement to stay aligned in one system. An integrated ERP setup helps turn fragmented updates into clear cost visibility, so risks are flagged early before they erode margins.<\/p>\n<p><a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-construction-management-software\/\">Integrated construction platforms<\/a> connect construction management, accounting, and supply chain workflows so teams can control budgets consistently from planning through execution. In practice, the capabilities that matter most include:<\/p>\n<ul>\n<li><strong>Real-time budget S-curve:<\/strong> Compares budget vs actuals continuously, so deviations are caught early and corrected faster.<\/li>\n<li><strong>Detailed job estimates:<\/strong> Builds a stronger baseline by breaking costs into materials, labour, and overhead, reducing scope-driven leakage.<\/li>\n<li><strong>Procurement control:<\/strong> Links PR\u2013PO\u2013invoice to budget approvals to prevent unplanned spend and reduce downtime from late materials.<\/li>\n<li><strong>Centralised project monitoring:<\/strong> Gives a single dashboard for progress and resource usage across sites to reduce reporting gaps.<\/li>\n<li><strong>Automated progressive claims:<\/strong> Speeds up billing based on verified progress, supporting healthier cash flow and fewer disputes.<\/li>\n<\/ul>\n<p>With the right system,<span id=\"recommendation\"> teams spend less time firefighting and more time controlling costs, schedules, and accountability throughout the project lifecycle.<\/span><\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>Cost overrun is not an unavoidable outcome, but a measurable business risk that can be controlled with the right discipline and governance. The shift that matters most is moving from reactive firefighting to proactive prevention through stronger planning, execution, and accountability.<\/p>\n<p>When teams apply detailed estimation, strict scope control, frequent cost monitoring, and clear decision cadence, budgets become more predictable and easier to defend. Early warning signals also become actionable, so small deviations are corrected before they turn into structural overruns.<\/p>\n<p>Modern project technology strengthens this control by centralising cost, progress, procurement, and approvals into consistent reporting and faster decisions. If your team is evaluating improvements to cost governance, schedule a <a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/\">free consultation<\/a> to review your current process gaps and identify the most practical upgrades for your project environment.<\/p>\n<h2><strong>FAQ About Cost Overrun<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>What is the difference between cost overrun and budget overrun?<\/strong><\/summary>\n<p>Cost overrun refers to the final actual cost exceeding the total budgeted cost for a project. Budget overrun is sometimes used more broadly to describe spending beyond a planned budget during a specific period, even before the project is completed.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What percentage of cost overrun is considered acceptable?<\/strong><\/summary>\n<p>There is no universal threshold because it depends on project size, contract type, and complexity. In many industries, overruns below 5\u201310% may be manageable, while 15\u201320% typically signals significant estimation, scope, or execution issues that need governance fixes.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>How does scope creep directly cause cost overrun?<\/strong><\/summary>\n<p>Scope creep adds work beyond the approved scope without formal change control that adjusts budget and timeline. Each additional task consumes unbudgeted labour, materials, and time, which increases actual costs and often triggers knock-on expenses such as rework, overtime, and delays.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"What is the difference between cost overrun and budget overrun?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Cost overrun refers to the final actual cost exceeding the total budgeted cost for a project. Budget overrun is sometimes used more broadly to describe spending beyond a planned budget during a specific period, even before the project is completed.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What percentage of cost overrun is considered acceptable?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"There is no universal threshold because it depends on project size, contract type, and complexity. In many industries, overruns below 5\u201310% may be manageable, while 15\u201320% typically signals significant estimation, scope, or execution issues that need governance fixes.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"How does scope creep directly cause cost overrun?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Scope creep adds work beyond the approved scope without formal change control that adjusts budget and timeline. Each additional task consumes unbudgeted labour, materials, and time, which increases actual costs and often triggers knock-on expenses such as rework, overtime, and delays.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A project can look on track on paper, yet still bleed money through small leaks, scope changes without cost approval, rushed procurement, rework, and delayed sign-offs. When these issues stack up, cost overruns stop being a budget line item and become a profitability problem that leadership has to solve under pressure. For project owners, finance [&hellip;]<\/p>\n","protected":false},"author":17,"featured_media":15216,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[61],"tags":[],"class_list":{"0":"post-15204","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-construction"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v26.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cost Overrun: Definition, Causes and How To Prevent It<\/title>\n<meta name=\"description\" content=\"Learn the causes, impacts, &amp; expert strategies to prevent project cost overrun. Keep your projects profitable and on track with our complete 2026 guide. Read now!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cost Overrun: Definition, Causes and How To Prevent It\" \/>\n<meta property=\"og:description\" content=\"Learn the causes, impacts, &amp; expert strategies to prevent project cost overrun. Keep your projects profitable and on track with our complete 2026 guide. Read now!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-28T02:04:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-20T04:35:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overrun.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Fahrul Muharman\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fahrul Muharman\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/\"},\"author\":{\"name\":\"Fahrul Muharman\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/e53eebf1739b93c84a26161052745bb6\"},\"headline\":\"Cost Overrun: Definition, Causes and How To Prevent It\",\"datePublished\":\"2026-01-28T02:04:47+00:00\",\"dateModified\":\"2026-02-20T04:35:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/\"},\"wordCount\":2468,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overrun.webp\",\"articleSection\":[\"Construction\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/\",\"name\":\"Cost Overrun: Definition, Causes and How To Prevent It\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overrun.webp\",\"datePublished\":\"2026-01-28T02:04:47+00:00\",\"dateModified\":\"2026-02-20T04:35:16+00:00\",\"description\":\"Learn the causes, impacts, & expert strategies to prevent project cost overrun. Keep your projects profitable and on track with our complete 2026 guide. Read now!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overrun.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overrun.webp\",\"width\":1200,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cost Overrun: Definition, Causes and How To Prevent It\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"name\":\"HashMicro Malaysia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\",\"name\":\"HashMicro Malaysia\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"width\":422,\"height\":255,\"caption\":\"HashMicro Malaysia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/e53eebf1739b93c84a26161052745bb6\",\"name\":\"Fahrul Muharman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/99e31d39c20b9ea905fbdbdf36ef26ee?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/99e31d39c20b9ea905fbdbdf36ef26ee?s=96&d=mm&r=g\",\"caption\":\"Fahrul Muharman\"},\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/fahrul-muharman\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cost Overrun: Definition, Causes and How To Prevent It","description":"Learn the causes, impacts, & expert strategies to prevent project cost overrun. Keep your projects profitable and on track with our complete 2026 guide. Read now!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/","og_locale":"en_US","og_type":"article","og_title":"Cost Overrun: Definition, Causes and How To Prevent It","og_description":"Learn the causes, impacts, & expert strategies to prevent project cost overrun. Keep your projects profitable and on track with our complete 2026 guide. Read now!","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/","og_site_name":"HashMicro Malaysia","article_published_time":"2026-01-28T02:04:47+00:00","article_modified_time":"2026-02-20T04:35:16+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overrun.webp","type":"image\/webp"}],"author":"Fahrul Muharman","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fahrul Muharman","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/"},"author":{"name":"Fahrul Muharman","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/e53eebf1739b93c84a26161052745bb6"},"headline":"Cost Overrun: Definition, Causes and How To Prevent It","datePublished":"2026-01-28T02:04:47+00:00","dateModified":"2026-02-20T04:35:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/"},"wordCount":2468,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overrun.webp","articleSection":["Construction"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/","name":"Cost Overrun: Definition, Causes and How To Prevent It","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overrun.webp","datePublished":"2026-01-28T02:04:47+00:00","dateModified":"2026-02-20T04:35:16+00:00","description":"Learn the causes, impacts, & expert strategies to prevent project cost overrun. Keep your projects profitable and on track with our complete 2026 guide. Read now!","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overrun.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/01\/cost-overrun.webp","width":1200,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/project-cost-overrun\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"Cost Overrun: Definition, Causes and How To Prevent It"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website","url":"https:\/\/www.hashmicro.com\/my\/blog\/","name":"HashMicro Malaysia","description":"","publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization","name":"HashMicro Malaysia","url":"https:\/\/www.hashmicro.com\/my\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","width":422,"height":255,"caption":"HashMicro Malaysia"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/e53eebf1739b93c84a26161052745bb6","name":"Fahrul Muharman","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/99e31d39c20b9ea905fbdbdf36ef26ee?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/99e31d39c20b9ea905fbdbdf36ef26ee?s=96&d=mm&r=g","caption":"Fahrul Muharman"},"url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/fahrul-muharman\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/15204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=15204"}],"version-history":[{"count":8,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/15204\/revisions"}],"predecessor-version":[{"id":15470,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/15204\/revisions\/15470"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/15216"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=15204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=15204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=15204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}