How We Fixed -19 Days of Negative Float in Primavera P6: A Construction Case Study
A month-by-month post-mortem of float erosion on a hospital fit-out — the causes we found, the fixes that worked, and the process we changed forever.
By Dr. Hassan Eliwa, PhD — Founder of PMMilestone.org & PMMilestone.com · 2026-07-15
How We Fixed -19 Days of Negative Float in Primavera P6: A Construction Case Study
By Dr. Hassan Eliwa, PhD — Founder of PMMilestone.org & PMMilestone.com · Updated 2026-07-15 · https://pmmilestone.com/career-guides/how-we-fixed-negative-float-primavera-p6-case-study

At 7:40 on a Monday morning, our monthly schedule update for a hospital ward block finished calculating and the Total Float column on the fit-out path read -19 days. Four weeks earlier it had been -6. Three months earlier it had been +14. Nobody on the project — including me, the project controls lead — had raised a formal alarm until the number turned red.
This article is the honest post-mortem of that schedule: how the float eroded, why our early warnings failed, exactly which P6 mechanics were involved, and how we recovered 18 working days without adding a single crew. If you learn negative float from a story rather than a settings menu, this one is for you. Names and dates are altered; the mechanics are exactly as they happened.
The project, and the slow leak
The job was a four-storey ward block: structure complete, envelope closing out, and a heavily serviced fit-out ahead of a fixed handover to the health board. The completion date carried liquidated damages and — more importantly for the client — a patient decant plan booked eight months in advance. The Must Finish By date in P6 was genuinely immovable.
Here is the float on the driving path across six monthly updates. Notice that the story is not the month the float went negative. The story is the three months of steady erosion beforehand that we reported as line items and never as a trend.
Float erosion on the ward-block fit-out — six monthly updates
Figure 1 — Total float on the fit-out driving path across six updates. The slope was visible from Update 2; the escalation happened at Update 5.
What we reported vs. what we should have reported
| Update | Total Float | What we reported | What we should have reported |
|---|---|---|---|
| Baseline | +25d | Comfortable buffer on fit-out | Buffer assumes level-by-level sequential fit-out — fragile assumption |
| Update 1 | +21d | Minor slippage on envelope | Envelope slippage consumes fit-out float 1:1 — start tracking burn rate |
| Update 2 | +14d | Drywall procurement delay noted | Float burn rate now 5–7d/month; at this rate, negative by Update 5 |
| Update 3 | +8d | 'Recoverable' slippage on Level 2 | Recovery plan required NOW, while options are cheap |
| Update 4 | +2d | Watching brief | Two days is zero days. Escalate. |
| Update 5 | -6d | Escalated to project manager | Three months late |
| Update 6 | -19d | Recovery workshop convened | — |
📌 The first lesson. Negative float is a lagging indicator. Float burn rate is the leading one. From that project onward, every dashboard I build carries a float-erosion trend chart, and any path burning more than 20% of its float in a single period triggers a review — while it is still positive.
The forensic walk-through: three causes stacked on top of each other
When we finally sat down with the schedule, the -19 days was not one problem. It was three, compounding. This layering is typical — real schedules rarely fail from a single cause, which is why quick fixes so often disappoint.
Layer 1: Out-of-sequence progress strangled by Retained Logic (7 of the 19 days)
The mechanical contractor had jumped ahead: ductwork on Level 3 started while Level 2 ceilings — its predecessor in our network — were still open. Sensible on site, chaos in the model. Our scheduling option was Retained Logic, so P6 held the remaining Level 3 duct duration hostage until the Level 2 predecessor finished, pushing the forecast right and dragging float down. The work was actually ahead; the model said we were behind. Seven days of our negative float were fiction created by logic that no longer matched the build sequence.
Should we have flipped to Progress Override? Here is the comparison we worked through, because the difference matters more than most planners realise:
| Scheduling option | What P6 does with out-of-sequence work | Effect on float | When to use it |
|---|---|---|---|
| Retained Logic (default) | Holds remaining duration until the predecessor finishes, even if the successor has actually started. | Pushes dates right; float looks worse than reality. | Almost always. Then repair the logic to match the real sequence. |
| Progress Override | Ignores the incomplete predecessor for the started successor and continues. | Cosmetically improves float; hides broken logic. | Rare — and never as a permanent setting on a contract programme. |
| Actual Dates | Recalculates float using actual dates for started activities. | Similar to Retained Logic but honours actuals more strictly. | Sensible in forensic analysis; be explicit about it. |
We kept Retained Logic and spent half a day correcting relationships to the as-built sequence — converting the level-to-level Finish-to-Start relationships into Start-to-Start with lags that reflected the crews' actual leapfrog pattern. Seven days of negative float evaporated, honestly.
Layer 2: A milestone constraint nobody remembered adding (4 of the 19 days)
Buried on an interim milestone — "Level 1 Ready for Medical Equipment" — sat a Finish On or Before constraint from a superseded equipment delivery plan. The vendor had long since re-booked, but the constraint stayed, quietly compressing the backward pass on everything feeding that milestone. Four days of negative float were the ghost of a delivery date that no longer existed. We removed it, documented why in the update narrative, and added a standing agenda item: review every constraint, every update, against its current justification.
Layer 3: Genuine delay (8 of the 19 days)
After the fictional float was cleared, eight days of real negative float remained: drywall procurement plus a rework issue on Level 2 had truly pushed the forecast past the immovable handover. This is the important discipline — separating artificial negative float from honest negative float — because the responses are completely different. You repair the first in the model; you recover the second on the site.
The recovery: 18 days without adding a crew
The knee-jerk suggestion at the recovery workshop was overtime and a second drywall crew. We modelled it first in a copy of the schedule — always model before you commit — and the crashing option bought only six days at significant cost, because the fit-out was sequence-bound, not resource-bound. The winning move was structural: abandoning the floor-by-floor sequence in favour of zoned, overlapped trades.
Sequential vs. zoned & overlapped fit-out
Finish-to-Start between levels. Level 3 finishes 19 days past handover.
SS + lag between trades within each zone; FF between predecessor trades. Handover recovered with +4 days float.
Figure 2 — The re-sequenced fit-out. Splitting each level into zones let MEP second fix start 12 days into drywall instead of waiting for full-floor completion.
In P6 terms, the change was: split the level activities into zone activities, replace Finish-to-Start relationships with Start-to-Start plus lag between trades within each level, and keep Finish-to-Finish ties so no trade could finish ahead of its predecessor trade. The reschedule showed the handover recovered with four days of positive float restored. The site team validated the zone boundaries before we published anything — a re-sequence the foremen have not agreed to is a work of fiction with nice formatting.
Expert tip. When you present recovery options, present at least three and price all of them: do nothing (accept delay + LDs), crash (cost of acceleration), and re-sequence (cost of disruption/supervision). Management chooses faster and defends the choice better when they can see what was rejected and why.
What we changed permanently after this project
- Float trend charts on every report. One number tells you where you are; the trend tells you where you are going. The trend is the report.
- A constraint register. Every constraint in the schedule is listed with its justification, its source document, and a review date. Orphan constraints get deleted on sight.
- Out-of-sequence review as a standing update step. The Schedule Log's out-of-sequence list is worked to zero before the update is published — either the logic is corrected or the deviation is explained in the narrative.
- Separate reporting of artificial vs. honest negative float. The update narrative states how much negative float is model noise (and how it was cleaned) versus genuine forecast overrun (and what the recovery plan is).
- Recovery modelling in a project copy, never in the live schedule. Scenario schedules are labelled, dated, and deleted or archived once a decision is made, so nobody ever mistakes a what-if for the plan.
Check your own schedule for the same disease
If this story feels uncomfortably familiar, here is the fifteen-minute self-check we now run on any schedule we inherit. It will not fix anything, but it will tell you whether you are sitting on the same three layers we were:
| ✔ Check | Where in P6 | Healthy looks like | Warning sign |
|---|---|---|---|
| Out-of-sequence count | Schedule Log after F9 | Zero, or each one explained in the narrative | Dozens of entries carried across multiple updates |
| Constraint inventory | Group activities by Primary Constraint | One project MFB + a handful with written justification | Constraints on ordinary activities, nobody knows why |
| Float trend | Compare Total Float across last 3 updates on the driving path | Stable or improving | Losing 20%+ of float per period |
| Actual date hygiene | Filter for actual dates beyond the data date | Zero results | Any result at all |
Any two warning signs together mean your next update is likely to spring a negative-float surprise. Fix them this cycle, while the column is still black — the whole point of our story is that the cheap moment to act is always earlier than it feels.
Mistakes we made — so you don't have to
- ⚠️ We reported float values, not float velocity. The erosion was obvious in hindsight and invisible in our monthly snapshots.
- ⚠️ We treated +2 days as a buffer. On a 14-month project with monthly updates, anything under a week of float on the driving path is functionally zero.
- ⚠️ We let logic go stale for three updates. Every out-of-sequence warning we ignored converted a site success into a model failure.
- ⚠️ We assumed constraints were self-maintaining. Constraints outlive their reasons. Without a register, nobody notices.
- ⚠️ We nearly bought the expensive fix first. Crashing feels decisive; re-sequencing usually buys more days for less money. Model both.
Key takeaways
- 📌 Watch float burn rate, not just float value — erosion trends give you months of warning that a red number never will.
- 📌 Real negative float is usually layered: stale logic, forgotten constraints, and genuine delay stacked together. Peel the layers in that order.
- 📌 Separate artificial from honest negative float before reporting. One is cleaned in the model; the other is recovered on site.
- 📌 Retained Logic plus disciplined logic repair beats Progress Override in every situation that matters, including the courtroom.
- 📌 Re-sequencing beat crashing on our project by three-to-one in days recovered per dollar. Always model the structural option.
🔗 Related career guides
- 📘 How expert planners read a Primavera P6 schedule in 10 minutes — the five-layer diagnostic method that would have caught the float trend at Update 2.
- 📘 Schedule entropy: why great schedules slowly become chaotic — the discipline behind constraint registers and out-of-sequence hygiene.
- 📘 Inside the Riverside office building Primavera P6 tutorial — the end-to-end P6 project where these same mechanics are rehearsed safely, before you meet them on a live job.
- 📘 How to become a delay analyst — the forensic career that grows from exactly the artificial-vs-honest float discipline in this article.
- 📘 How to pass the PMI-SP scheduling exam — CPM, float behaviour and constraints mapped to the exam domains.
Companion reading in the encyclopedia: Float Management, Critical Path Method, Schedule Compression, Time Impact Analysis, and Baseline Schedule.
Frequently Asked Questions
How quickly should negative float be escalated?
Same update cycle, no exceptions, if it touches the contractual completion path. But the better practice is escalating before it appears: set a trigger on float burn rate (for us, losing 20% of path float in one period) so the conversation happens while the fix is still cheap.Our client refuses to accept a schedule showing negative float. What now?
Some specifications do prohibit negative float in submitted programmes. In that case, maintain two artefacts honestly: a compliant submission showing the recovery plan that eliminates the negative float, and an internal working schedule that tracks the unvarnished forecast. What you must never do is silently 'fix' negative float with constraints or duration cuts and submit it as a forecast — that is how programmes lose all evidentiary value.Does out-of-sequence progress always create negative float?
No — it creates distortion, which becomes negative float only when the distorted path collides with a constraint or the project finish date. Plenty of out-of-sequence noise hides in float-rich paths doing quiet damage to forecast quality. Clean it anyway.Is it ever right to leave a stale constraint in place?
Only if it still has a live justification you can point to — a contract clause, a possession booking, a permit condition. 'It was in the baseline' is not a justification. Our rule: no source document, no constraint.What float burn rate should trigger a recovery workshop?
There is no universal number, but two heuristics have served me well: losing more than 20% of a driving path's float in a single update period, or the trend line projecting zero float earlier than three update cycles away. Either one means the workshop happens now.Can resource leveling cause negative float?
Indirectly, yes — leveling delays activities to resolve overallocations, and if a delayed activity collides with a constrained date, float goes negative. If you level, always compare pre- and post-leveling dates and check the float column before publishing. Better yet, resolve overallocations through sequence and crew decisions you control, and treat the leveler as an analysis tool.
People also ask
Follow-up questions practitioners search for next — each one points to the calculator, template or reference entry that answers it.
Which schedule tool will an interviewer expect me to know?
Runs the DCMA 14-point assessment against P6 / MS Project exports. Schedule Health Checker ↗
Where do I look up the terms in this guide?
Single-line definitions for 1,200+ project-management and controls terms. PM Glossary on PMMilestone.org ↗
Which books deepen this career path?
Field handbooks on project controls, P6 scheduling and EVM. Books & Publications ↗
Which academy track maps to this career step?
Structured progression from planner to programme controls director. Project Controls Academy ↗


