Schedule Analysis

Negative float: what it actually means and who owns it

Published 6 August 2026 · 8 minute read

Negative float is not a property of a task. It is a measurement of a conflict: the forecast says one thing, and something else in the file insists on an earlier answer. Which is why the first diagnostic question is never "how much" and never "which task". It is: against what? Until that question is answered, the minus sign in the float column is a number without a sentence around it, and every conversation it starts will be the wrong conversation.

Against what?

Total float is the gap between the late dates and the early dates, and late dates only exist because something anchors the backward pass. When the forecast finishes later than the anchor, the backward pass pulls late dates earlier than early dates, and the gap goes negative. So negative float always names a collision with a specific object you can point to: a hard constraint on a downstream activity, a Must Finish By date on the project in P6, a Deadline in Microsoft Project, a contractual milestone constrained to its obligation date. Find the anchor first. The recovery conversation for "we are ten days behind a client-imposed access date" and "we are ten days behind a Finish On constraint somebody typed in eight months ago and forgot" are different conversations, and the float column cannot tell them apart.

The three usual producers

In practice almost all negative float traces to one of three sources:

Baseline versus mid-execution

Negative float on a submitted baseline is a different animal from negative float in month seven. A baseline is a proposal. Submitting one with negative float says "we plan, from day one, to miss a date we are contracted to hit", which is either an admission that the scope does not fit the window or a sign the file was never checked. Most contract schedule specifications reject it outright, and DCMA treats any negative total float as a defect requiring a documented recovery position. There is no acceptable quantity on a baseline.

Mid-execution is where the counterargument lives. A live programme that never shows negative float is suspicious in the other direction: real projects slip, and a file that always resolves to zero or better is usually being managed to look that way, through constraint softening or duration trims. Negative float appearing in an update is the schedule doing its job. The defect is not the number. The defect is a number with no recovery narrative attached, or the same number growing quietly for three updates in a row while the reports say "on track".

Why the tools disagree with each other

The same network can show negative float in one system and none in another, and knowing why saves an argument. In P6, whether Must Finish By participates at all, how retained logic versus progress override treats out-of-sequence work, and the "calculate float based on finish date" scheduling options each change the float column without changing a single date the site would recognise. Multiple float paths settings change which activities get flagged in a filter without altering the values. Two analysts opening the same XER with different scheduling options can genuinely both be right about what the file says, which is why any negative float finding should state the options it was calculated under.

Microsoft Project adds its own wrinkle: Deadlines. A deadline is not a constraint, it leaves the forward pass alone, but it caps the late dates, so a forecast past the deadline produces negative slack and a small red diamond warning. Schedulers who use deadlines instead of hard constraints are doing it right, and they should expect exactly this behaviour: the plan keeps telling the truth about when work will finish while the slack column reports the miss. The trap is the reverse assumption, an MSP file with clean slack proving nothing if nobody entered deadlines in the first place.

It spreads along the path. That tells you nothing about cause

Because float is a path property, every task on the chain between the driving work and the anchor shows the same negative value. Forty activities at minus twelve days is one problem, not forty problems, and the float column is completely silent about which activity created it. The slip might be a single procurement item at the head of the chain; every successor inherits the twelve days regardless of how well its own work is going. Sorting by total float and reading the worst offenders as the culprits is the most common misreading of a red schedule. The cause is found by walking the driving path backwards from the anchor to the first activity whose own performance, duration growth, or logic change introduced the delay, and that is an investigation, not a filter.

The recovery conversation has three exits

Once the anchor and cause are known, there are only three honest moves:

Who owns it

The split is clean. The scheduler owns detection and honesty: negative float is found, traced to its anchor and cause, and reported with the scheduling options stated. The project manager owns the decision: which of the three exits to take, what the recovery costs, what gets escalated. A scheduler who picks the exit unilaterally has exceeded the brief. A PM who shoots the messenger has guaranteed the next miss arrives unreported.

And one move sits outside the professional pale entirely: making negative float disappear by softening the constraint that measures it. Swapping Mandatory Finish for As Late As Possible, deleting a deadline, quietly sliding Must Finish By to the right. The commitment has not moved; only the instrument reporting the miss has been disconnected. Whoever finds it later, and in a compare between updates someone always does, will reasonably treat every other number in the file as suspect from that point on.

Reading negative float in someone else's programme

Reviewing a file you did not build, run the questions in this order. What are the scheduling options, and is a project must-finish date driving the backward pass? List every constraint harder than Start No Earlier Than and ask which ones correspond to a real external obligation. Then group the negative float: contiguous values along a path point to one anchor and one cause, scattered unrelated pockets point to constraint litter. Ask when it first appeared, because the update where minus three became minus nine is worth more to the review than the current value. And check the previous update for constraints that existed then and do not exist now. A programme whose negative float vanished between updates without an approved change is telling you where to look next.

Where PathProof fits

PathProof reads Microsoft Project and Primavera P6 files and runs the DCMA 14-point assessment on load, with check 7 listing every activity carrying negative total float as a per-task finding rather than a single pass or fail. Schedule Compare puts two updates side by side, so negative float shows up the month it arrives, its growth is visible update to update, and a constraint that was softened to make it disappear is listed as an explicit change. It runs locally on your own files, and the beta is free.