Total float, free float and negative float

Last reviewed 16 September 202614 min read

What each one measures, who it belongs to, and why the big numbers are usually lies

🟩 In one line Float is how far something can move before it damages something else. Total float measures damage to the completion date. Free float measures damage to the next activity. Negative float means the damage has already happened. None of the three is spare time you built β€” all three are outputs of the calculation, and they move every time you reschedule.

πŸ‘€ Who this is for Junior planners who can recite the formulas but can't yet say which number to quote to whom. Mid-level planners writing a narrative that has to explain why an activity with 60 days of float is a problem rather than a comfort. Anyone reviewing a programme and trying to work out whether the float column is telling the truth.

e / c

First, let's be honest about why this page exists

Almost everyone learns float as a formula and then spends years using it wrongly.

The formula is three lines and takes ten minutes. What takes years is the habit of treating float as a thing the project has β€” a buffer, a reserve, an allowance, something that was put there on purpose and can be spent on purpose. It isn't. Nobody put it there. It is the arithmetic left over after the forward and backward passes have run, and it will be a different number next month whether or not anybody touched it.

That misunderstanding produces three specific failures, and you will see all three on live projects:

  • A planner reports 40 days of float on a package and the project manager treats it as 40 days of permission. Two trades spend the same 40 days independently, because total float is shared and nobody said so.
  • A reviewer sees a column full of large positive numbers and concludes the programme is comfortable. It is not comfortable. It is disconnected.
  • Negative float appears, and the fastest way to make it disappear β€” adding a constraint β€” gets used, which converts a visible problem into an invisible one.

So this page does the formulas quickly and then spends most of its length on the part that actually matters: what each number is worth as evidence, and how to tell whether it is true.

🟨 The standard β€” what "good" looks like

Total float is the number of working periods an activity can be delayed from its early dates without delaying project completion or violating a constraint. It is calculated as late start βˆ’ early start (equivalently, late finish βˆ’ early finish).

Free float is the number of working periods an activity can be delayed without delaying the early start of any successor. It is calculated as the earliest early start among the successors βˆ’ the activity's early finish, adjusted for relationship type and lag.

Negative float is not a fourth type. It is a total float value below zero, which occurs when the backward pass produces late dates earlier than the forward pass produces early dates.

What the recognised sources add to that:

SourceWhat it says about float
PMI Practice Standard for Scheduling, 3rd ed.Defines total and free float as calculated outputs of the CPM passes, not as management reserve. Reserve, where it exists, is a separate, explicitly named activity.
AACE RP 49R-06, Identifying the Critical PathWarns that lowest-total-float and longest-path are not the same set of activities once multiple calendars or constraints are involved. Float-based criticality is the weaker of the two definitions.
DCMA 14-point, Metric 6No more than 5% of incomplete activities should carry total float above 44 working days. Read as a logic completeness test, not a slack measurement.
DCMA 14-point, Metric 7Zero activities with negative float. One of the few thresholds worth taking literally in a live update.
SCL Delay and Disruption Protocol, 2nd ed.Unless the contract says otherwise, float is not for the exclusive benefit of either party. In practice: first come, first served.

🟒 Rule: quote the forecast date when asked "when", and the float when asked "how much room". Never let one answer stand in for the other. Report total float as the project-level number, free float as the activity-level number, and state the calendar the figure is counted on β€” because a float column that mixes five-day and six-day calendars is adding up two different units.

How it actually works

Two passes over the network, and everything else follows from them.

The forward pass runs left to right from the data date and produces the early dates β€” the soonest each activity can happen given its predecessors. The backward pass runs right to left from the project finish (or from each constrained date) and produces the late dates β€” the latest each activity can happen without pushing that finish.

Total float is the gap between them. Where the two passes meet with no gap, float is zero.

The three float types, side by side

TypeWhat it measuresFormulaWho it belongs to
Total floatHow far the activity can slip before completion, or a constrained date, movesLate start βˆ’ early startThe whole chain
Free floatHow far it can slip before the next activity is pushedEarliest successor early start βˆ’ early finishThat activity alone
Negative floatHow far behind the logic already is against a date it has been told to meetA total float value below zeroNobody β€” it's a warning, not a resource

The ownership difference is the practical one. If an activity has 12 days of free float, you can absorb 12 days without ringing anybody. If it has 12 days of total float and no free float, those 12 days belong to every activity behind it on the same path, and the first person to spend them takes them from everybody else. That is how a programme quietly loses its buffer between one update and the next β€” not through one big slip, but through three trades each spending the same fortnight.

Four things that distort the number

  • Calendars. Float is expressed in working days on the activity's own calendar. Twelve days of float on a six-day calendar is ten calendar days shorter than twelve days on a five-day calendar. A report listing both in one column is comparing two different units and nobody notices.
  • Constraints. A finish-on-or-before constraint pulls the late dates backwards for everything feeding it. Float upstream drops β€” sometimes below zero β€” without a single activity having slipped.
  • Multiple finish points. Sectional completion dates each drive their own backward pass. Total float against section two says nothing about the overall completion date, and the two numbers can point in opposite directions.
  • The critical-activity setting. In Tools β†’ Schedule β†’ Options, P6 defines critical activities either by total float below a threshold or by longest path. Change that setting and the float values don't move, but everyone's definition of "critical" does. See critical path vs longest path.

Why high float almost always means broken logic

Because genuine slack of two months is rare, and a missing successor produces exactly the same symptom.

An activity with no successor inherits the project's late finish. Its late dates jump to the end of the programme, its total float becomes enormous, and it vanishes from every critical path report. The number looks like comfort. It is an open end.

When you see a cluster of high-float activities, work through them in this order and stop at the first "no":

  1. Does the activity have a successor at all?
  2. Does it have a finish successor, or only a start-to-start link β€” which leaves the finish dangling?
  3. Is the successor the right one, or a convenience link to the completion milestone?
  4. Is it on a different calendar from the work around it?
  5. Only then: is the float real?

Real high float does exist β€” early enabling works, long-lead procurement with a comfortable required-on-site date, a standalone temporary facility. When it is real, say so in the narrative. Unexplained high float is read by a reviewer as carelessness and by a claims consultant as an opportunity.

What negative float is telling you

That two things you entered disagree with each other. It is never a software error. The logic says the work needs more time than the date it has been given, and the programme is refusing to pretend otherwise.

CauseHow to confirmWhat to do
A constraint is wrong or out of dateFilter for activities with constraints on the negative pathRemove it, or update it to the current agreed date
The required completion date is no longer achievableTrace the driving path from the data dateReport it. Do not hide it.
Progress has slipped and nothing has been re-plannedCompare the driving path with last month'sMitigate, accelerate, or notify

The full treatment of causes and responses is on negative float. The point to carry from here is that negative float is a difference between two things you control, so the fix is always to change one of them honestly β€” never to hide the difference.

πŸŸ₯ Where people go wrong

1. Treating total float as an allowance. "We've got 30 days of float on the faΓ§ade." No β€” the path has 30 days, and there are four packages on it. The moment two of them plan around the same 30 days, the programme is over-committed and nothing in the file says so. If you are going to quote total float to a trade, quote the free float too, or quote nothing.

2. Reading a big number as comfort. DCMA sets the high-float trip-wire at 44 working days for a reason: past roughly two months, the likeliest explanation is a defect rather than genuine slack. Reviewers know this. A programme where 18% of activities carry 60+ days of float does not look relaxed, it looks unlinked.

3. Comparing float across calendars. The single most common quiet error in float reporting. Sort a mixed-calendar programme by total float ascending and the top of the list is partly an artefact of which calendar each activity sits on. Filter by calendar, or convert, before you draw a conclusion.

4. Using free float where total float was meant, in a claim. Free float is an activity-level number. It says nothing about completion. An extension-of-time argument built on free float consumption will not survive first contact with anybody competent, because the test is delay to completion, not delay to an activity.

5. Killing negative float with a constraint. The fastest fix and always the wrong one. It moves the problem out of the float column β€” which everybody filters β€” into the constraint field, which almost nobody does. The next reviewer will find it, and by then it will be six updates old and much harder to explain.

6. Letting the float column drive the conversation instead of the driving path. Lowest total float is a proxy for criticality, not a definition of it. On a programme with several calendars or a couple of intermediate constraints, the lowest-float activities and the actual driving path to completion can be two different lists. Trace the path; don't sort the column.

7. Never recalculating after a change. Float is an output. Add a relationship, change a calendar, move a constraint, status an actual β€” and every float value in the file is stale until you reschedule. Reporting float from a file that hasn't been rescheduled since the last edit is reporting a number that no longer exists.

πŸ“œ Who owns the float

This is where the arithmetic meets the contract, and it is worth being precise, because the answer gets asserted with far more confidence than it deserves.

Most standard forms are silent on float ownership. FIDIC and NEC do not allocate it. Where the contract says nothing, the widely followed position β€” set out in the SCL Delay and Disruption Protocol β€” is that float is not reserved for either party's exclusive benefit.

In practice this operates as first come, first served. Whichever party's delay reaches the activity first consumes the float. An Employer delay that only eats into float typically produces no extension of time, because completion has not moved.

Two consequences follow, and they point in opposite directions depending on which chair you're sitting in:

  • If you are the Contractor, float you build in quietly is float the Employer may use for free. That is an argument for declaring your intended sequence and any deliberate time risk allowance in the schedule basis memorandum β€” named, visible, and explained β€” rather than burying it in inflated durations.
  • If you are assessing an EOT claim, the question is never whether an event delayed an activity. It is whether it delayed completion. Float is what stands between the two, and quantifying it is most of the assessment.

Some bespoke Gulf contracts do address float, usually by stating that it belongs to the project or to the Employer. Where such a clause exists it displaces the default entirely, so read it before relying on anything above.

General guidance, not legal advice. Contract wording, editions and amendments differ on every project. Read your own conditions and take professional advice before relying on any of this in a claim.

βš–οΈ When you're challenged

"You've got 45 days of float here, so this delay costs us nothing." "Forty-five days of total float, shared with everything else on that path β€” and the free float on this activity is two days. If we spend forty-five here, the three packages behind it lose the same forty-five. Happy to spend it, but let's agree who else is being told."

"Why does the programme show 200 activities with more than 44 days of float?" "Because about 160 of them have no finish successor. That's not slack, it's missing logic, and I'm fixing it this cycle. The remaining 40 are genuine β€” enabling works and long-lead items β€” and I'll list them with a reason in the narrative." Then actually do both.

"Last month this activity had 12 days of float. Now it has minus 3. Nothing has slipped." "Nothing on this activity slipped. Someone added a finish-on-or-before constraint to the milestone downstream of it, which moved the late dates for everything feeding that milestone. The work didn't change; the date it's being measured against did." Then produce the schedule comparison showing exactly that.

"Our float column shows 15 days but the subcontractor says they have none." "They're both right. The chain has 15 days. Their activity has zero free float, so any slip on their part pushes the next trade immediately. Total float is what the path can absorb; free float is what they can absorb without a phone call."

"Just set the float to zero so it looks clean." "Float isn't a field β€” it's calculated. The only way to change it is to change the logic, the calendars, the constraints or the durations, and each of those changes what the programme says is going to happen. Tell me which one you want changed and I'll show you what it does to the finish date."

πŸ“„ Related pages

✏️ Worked example

Fit-out package on a Dubai mid-rise. Six-day calendar. Data date 1 October. Handover milestone constrained Finish On or Before 20 December.

Two chains feed the handover milestone. Chain A is the MEP second fix; chain B is the joinery. They merge at "Snagging and clean".

ActivityChainDurEarly finishLate finishTotal floatFree float
MEP second fix L12A1822 Oct22 Oct00
Testing and commissioningA2116 Nov16 Nov00
Joinery manufactureB2530 Oct20 Nov180
Joinery install L12B1517 Nov7 Dec1818
Snagging and cleanA+B1230 Nov30 Nov00
Handover milestoneβ€”030 Nov20 Dec1717

Four things in that table are worth pausing on, and each of them is a mistake somebody makes every month:

  • The two joinery activities both show 18 days of total float, but only one has free float. Joinery manufacture can slip a day and it immediately pushes joinery install β€” free float zero. Joinery install can slip 18 days before it touches snagging. If you tell the joinery subcontractor "you have 18 days", you have told them something true about the chain and something false about the manufacture.
  • Spending it twice. If manufacture takes 10 extra days and install takes 10 extra days, the chain has consumed 20 against an 18-day allowance and the handover milestone moves. Two people each thought they had 18.
  • The milestone has 17 days of float, not 20. The constraint is 20 December; the early finish is 30 November. On a six-day calendar that gap is 17 working days, not 20 calendar days. Quote the wrong unit and the mitigation plan is three days short before it starts.
  • If testing slips 5 days, every zero in the table stays zero and the milestone float drops to 12. Nothing about chain B changed. This is the thing to say in the narrative: which chain moved, and what it cost the end date β€” not a list of activities whose float happened to change.

The narrative paragraph that comes out of this:

Handover forecast 30 November against a required date of 20 December (+17 wd float, six-day calendar). The driving path runs through MEP second fix and testing; joinery carries 18 wd of total float, of which 18 sit on the install activity and none on manufacture. Joinery manufacture slipping more than one day will push install directly. Recommend the 18 days be treated as a single allowance held at project level rather than committed to either activity.

πŸ“– References

  • PMI, Practice Standard for Scheduling, 3rd ed. (2019) β€” definitions of total float, free float, and the forward and backward pass
  • AACE International RP 49R-06, Identifying the Critical Path β€” why float-based criticality and the driving path are not the same thing
  • SCL, Delay and Disruption Protocol, 2nd ed. (February 2017) β€” the position that float is not for the exclusive benefit of either party
  • DCMA, 14-Point Schedule Assessment β€” Metric 6 (high float) and Metric 7 (negative float)
  • US GAO, Schedule Assessment Guide (GAO-16-89G, 2015) β€” Best Practice 6, on float as an indicator of schedule health

From the field

Notes, corrections and additions from people who've done this on a real job. Everything is checked before it appears here.

Loading notes…

Checked before it appears. No client, project or employer names. Your name is shown; your email never is. Terms.