Skip to content
Badr Alghamdi
ToolsLearnReferenceGlossaryField LibraryMethod sheetsWritingAbout
العربية
←Lessons

Longest path: positive float, and still holding the finish date

Filter a programme on total float equals zero and you expect back the chain that sets the finish. Three activities and two calendars are enough to break it. Close one day on the downstream calendar and the upstream activity picks up a working day of float while still sitting on the only chain there is, so the filter returns two of the three and leaves out the one holding the date. Put every activity on one calendar and the filter and the chain agree again.

Live result

The only typed chain has 3 activities and the zero float filter returns 2.
  • float still on activity A1 day
Activity A still holds the finish while carrying positive float.
The only typed chain has 3 activities and the zero float filter returns 2.Activity A still holds the finish while carrying positive float.

The rule as commonly stated

The activities holding completion are exactly the activities whose total float is zero, so a zero float filter returns the complete finish setting chain.

Try a case

Close the downstream calendar

1 day

Starting on 2026-01-02. At zero, the second calendar is declared but changes no placed date.

One scope and information cut

The activities, links, calendars, and dates must describe the same scope and information cut before the witness is shown.

Early and late placement on each activity calendarThe only typed chain is A, B, C and its computed finish boundary is 2026-01-05. Activity A starts early on 2026-01-01, starts late on 2026-01-02, and has 1 working days of float. The zero float filter returns B, C.Civil dateEarly startLate startClosed dateA1B0C001-0101-05Finish boundary

The computable witness

A
Calendar
Daily calendar
Early start
2026-01-01
Late start
2026-01-02
Total float
1
B
Calendar
Downstream restricted calendar
Early start
2026-01-03
Late start
2026-01-03
Total float
0
C
Calendar
Daily calendar
Early start
2026-01-04
Late start
2026-01-04
Total float
0
ActivityCalendarEarly startLate startTotal float
ADaily calendar2026-01-012026-01-021
BDownstream restricted calendar2026-01-032026-01-030
CDaily calendar2026-01-042026-01-040
Only typed chain
A, B, C
Zero float filter
B, C
Omitted chain activity
A

The smallest breaker

Three one day activities form one serial chain. A and C work every civil date. B uses a calendar closed only on 2026-01-02. B moves to 2026-01-03, C finishes on 2026-01-04, and the finish boundary is 2026-01-05. A can move one working day without moving that finish.

The restoring condition

With one calendar throughout, zero lag, no overlap, no separate date constraint, and a finish computed from this serial chain, every early and late start coincides. The filter and the chain then both return A, B, and C.

What does not break the rule

Fixed reference with one daily calendar

All three activities use the daily calendar. The computed finish is 2026-01-04 and all three activities have zero float.

Finish boundary
2026-01-04
Zero float filter
A, B, C

Fixed reference with one shared restricted calendar

All three activities use the same calendar closed on 2026-01-02. The finish moves to 2026-01-05, but all three activities still have zero float.

Finish boundary
2026-01-05
Zero float filter
A, B, C

It tests a zero float filter on the typed three activity serial network, without deciding a programme, selecting a controlling set for use, allocating float, assigning delay, or deciding entitlement.

Here is the maths

▾

The formula, in words

Place each activity forward on its own calendar from the prior finish boundary. Then place each activity backward from the computed finish on its own calendar. Total float is the signed count of that activity calendar's working dates from early start up to late start.

TF=LS−ESTF=LS-ESTF=LS−ES where TFTFTF is total float, LSLSLS late start, and ESESES early start, counted in working dates on the activity calendar.

A worked example

  1. AAA works on 2026-01-01. BBB cannot work on 2026-01-02, so it works on 2026-01-03. CCC works on 2026-01-04 and the finish boundary is 2026-01-05.
  2. CCC is the third activity. Backward placement puts BBB and CCC on their early dates. It lets AAA start on 2026-01-02 instead of 2026-01-01, so AAA has 1 positive working day of float on its own calendar.
  3. The only typed chain is AAA, BBB, CCC. The zero float filter returns BBB and CCC, leaving AAA out.

What this does not model

This is not a general scheduler. It accepts exactly three serial activities, zero lag, no overlap, one computed finish, and no more than two calendars. An imposed finish uses another sign convention and is refused.

Source basis

The United States Government Accountability Office Schedule Assessment Guide supplies public practice context for schedule logic, calendars, durations, and date calculation. It supplies no copied definition, method table, named test, or equivalence. Schedule Assessment Guide.

The whole record prints. Your browser can save it as a PDF instead of printing it.

This counterexample does not make a finding about a programme, decide entitlement, impose a finish, support activity overlap, allocate float, or say who may use it. Requests for a programme decision or an imposed date interpretation are refused.

Related

  • Total float: who owns it decides whether the finish date movesA supplier runs 20 days late into an activity with 25 days of float and the finish date does not move. The second time it does, and the reason is something that happened weeks earlier to somebody else.Interactive lesson · 4 min
  • Concurrent delay: two delays at once, five different answersAn employer delay and a contractor delay land on the same three weeks. The facts do not change and neither do the dates, but every analysis method awards a different number of days.Interactive lesson · 4 min

Zero float filter witness

Longest path: positive float, and still holding the finish date

Accepted inputs

Consecutive closed dates
1 day
One scope and information cut
Confirmed
A
1 day, Daily calendar
B
1 day, Downstream restricted calendar
C
1 day, Daily calendar

All results

Finish boundary
2026-01-05
Only typed chain
A, B, C
Zero float filter
B, C
Omitted chain activity
A
A Total float
1
B Total float
0
C Total float
0

Calculation record

Calculation version
1.0.0
Boundary
It tests a zero float filter on the typed three activity serial network, without deciding a programme, selecting a controlling set for use, allocating float, assigning delay, or deciding entitlement.
Source basis
The United States Government Accountability Office Schedule Assessment Guide supplies public practice context for schedule logic, calendars, durations, and date calculation. It supplies no copied definition, method table, named test, or equivalence.

This counterexample does not make a finding about a programme, decide entitlement, impose a finish, support activity overlap, allocate float, or say who may use it. Requests for a programme decision or an imposed date interpretation are refused.

Badr Alghamdi · badralghamdi.com/learn/zero-float-filter

Badr Alghamdi

Request a consultationLinkedInGitHubRSS