Are you actually still in budget?
Committed spend is the column most trackers leave out, and it is the one that decides the answer. Money ordered is money gone, whatever the invoice date says.
Baseline, committed, actual, forecast
Committed spend is the column most trackers omit, and it is the one that decides whether you are actually still in budget.
Budget lines
Leave the forecast blank and it defaults to the greater of the baseline and what is already spent plus committed.
Where the money is
Line by line
By category
The four numbers
Baseline — what was approved.
Committed — ordered, contracted or otherwise promised, but not yet invoiced.
Actual — spent and invoiced.
Forecast — what the line will finally cost.
remaining = baseline − actual − committed, not baseline minus actual.
Amounts are held as integer minor units and converted only for display. Floating-point money silently loses pennies, and pennies are what a finance team notices.
Committed spend is where budgets go wrong
A project that has spent 40% of its budget and committed another 50% has 10% of freedom left, not 60%. A tracker showing only actuals reports it as comfortably under budget, and keeps doing so until the invoices arrive.
The moment an order is placed the money is gone in every sense that matters — it is no longer available for anything else, and cancelling usually costs something. Recording it at the point of commitment rather than the point of invoice is the single biggest improvement most project budgets can make.
Contingency is not budget
Rolling contingency into the working lines makes everything look funded and hides the moment you start spending the reserve. Held separately, the question "how much contingency have we used?" has an answer, and it is usually the earliest reliable signal that a project is in trouble.
A project halfway through that has used most of its contingency is telling you something the schedule has not said yet.
A forecast that defaults to the baseline is a lie
If a line has already spent and committed more than it was given, forecasting it at baseline is arithmetically impossible. It happens constantly, because the baseline is the number sitting in the template.
Defaulting the forecast to the greater of the baseline and what is already gone means an overrun cannot hide in a blank field.