Career Paths · Primavera P6 · 14 min read

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

Reading time · 14 min · Updated 2026-07-15
Primavera P6 schedule showing -15 days of negative float with data date, contract finish, driving activities, finish constraint and executive dashboard KPIs
Primavera P6 schedule showing -15 days of negative float with data date, contract finish, driving activities, finish constraint and executive dashboard KPIs

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.

Primavera P6 schedule showing -15 days of negative float with data date, contract finish, driving activities, finish constraint and executive dashboard KPIs
Figure 0 — A Primavera P6 schedule with the negative-float anatomy annotated: data date, contract finish, driving activities, finish constraint, and the executive dashboard KPIs (SPI, CPI, schedule status, delay indicator) that first alerted the client.

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

+25d
Baseline
+21d
Upd 1
+14d
Upd 2
+8d
Upd 3
+2d
Upd 4
-6d
Upd 5
-19d
Upd 6
Total float (days) on the fit-out driving path, six consecutive monthly updates. Green = healthy; amber = watch; red = negative.

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+25dComfortable buffer on fit-outBuffer assumes level-by-level sequential fit-out — fragile assumption
Update 1+21dMinor slippage on envelopeEnvelope slippage consumes fit-out float 1:1 — start tracking burn rate
Update 2+14dDrywall procurement delay notedFloat burn rate now 5–7d/month; at this rate, negative by Update 5
Update 3+8d'Recoverable' slippage on Level 2Recovery plan required NOW, while options are cheap
Update 4+2dWatching briefTwo days is zero days. Escalate.
Update 5-6dEscalated to project managerThree months late
Update 6-19dRecovery 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 OverrideIgnores 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 DatesRecalculates 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

Before — Sequential fit-out
Level 1
Level 2
Level 3

Finish-to-Start between levels. Level 3 finishes 19 days past handover.

After — Zoned & overlapped
L1 Zone A
L1 Zone B
L2 Zone A
L2 Zone B
L3 Zone A
L3 Zone B

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

  1. 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.
  2. 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.
  3. 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.
  4. 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).
  5. 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 countSchedule Log after F9Zero, or each one explained in the narrativeDozens of entries carried across multiple updates
Constraint inventoryGroup activities by Primary ConstraintOne project MFB + a handful with written justificationConstraints on ordinary activities, nobody knows why
Float trendCompare Total Float across last 3 updates on the driving pathStable or improvingLosing 20%+ of float per period
Actual date hygieneFilter for actual dates beyond the data dateZero resultsAny 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

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.

More career guides

Buy me a coffee