Maximum FDP for an Early Morning Report

The exact question this guide answers is one a dual-jurisdiction scheduler faces every rotation build: for a crew member reporting at 05:30 acclimatised time and flying four sectors, what is the maximum flight duty period under FAA Part 117, what is it under EASA CS-FTL.1, and which of the two binds the day? Early-morning reports are the sharpest test of the two regimes because they clip the window of circadian low (WOCL), and both rule sets penalise that encroachment — but by different amounts and off different base tables. This page resolves both ceilings from data, reconciles them, and shows the code that turns the two FAA vs EASA scenario comparisons into a single verdict. It draws its constants from the regulatory reference tables and its rule sets from the FAA Part 117 rule schema design and EASA FTL compliance frameworks.

Prerequisites

The scenario, stated precisely

A crew member acclimatised to America/New_York reports at 05:30 local for a four-sector day. Both regimes treat 05:30 as an early report that encroaches on the WOCL, and both look the ceiling up in a two-dimensional table keyed on the report band and the leg count. The two lookups are independent; nothing about the FAA result influences the EASA result.

Step 1 — Resolve the FAA Part 117 ceiling

Under §117.13, a 05:30 acclimatised report falls in the 0500–0559 band. Reading Table B across to the four-segment column gives 12 hours 00 minutes (720 minutes) of maximum unaugmented flight duty period.

from datetime import time

# FAA §117.13 Table B row for the 0500-0559 band, minutes by segment (1..7).
FAA_TABLE_B_0500 = {1: 720, 2: 720, 3: 720, 4: 720, 5: 690, 6: 660, 7: 630}


def faa_fdp_minutes(report: time, segments: int) -> int:
    if time(5, 0) <= report <= time(5, 59):
        return FAA_TABLE_B_0500[min(segments, 7)]
    raise LookupError("this worked example only seeds the 0500-0559 band")


faa = faa_fdp_minutes(time(5, 30), 4)   # -> 720

Verify: faa_fdp_minutes(time(5, 30), 4) returns 720, i.e. 12:00. The FAA table holds a flat 12:00 across one to four segments in this band before the per-segment reduction begins at the fifth leg.

Step 2 — Resolve the EASA CS FTL.1.205 ceiling

EASA bands the early morning more finely. A 05:30 report falls in the 0530–0544 band, whose base value for one to two sectors is 12:30; the table then subtracts 30 minutes for each sector beyond the second. Four sectors is two steps below the base, giving 11 hours 30 minutes (690 minutes).

def easa_fdp_minutes(report: time, sectors: int) -> int:
    """CS FTL.1.205 acclimatised table, 0530-0544 band: 12:30 base, -30 min/sector > 2."""
    if not time(5, 30) <= report <= time(5, 44):
        raise LookupError("this worked example only seeds the 0530-0544 band")
    base = 12 * 60 + 30            # 12:30 for 1-2 sectors
    reduction = 30 * max(0, sectors - 2)
    return max(base - reduction, 9 * 60)   # never below the 9:00 floor


easa = easa_fdp_minutes(time(5, 30), 4)   # -> 690

Verify: easa_fdp_minutes(time(5, 30), 4) returns 690, i.e. 11:30 — exactly one hour of reduction (two sectors × 30 minutes) below the 12:30 base.

Step 3 — Reconcile and report the binding regime

With two independent ceilings, the binding constraint for a pairing that must satisfy both regimes is the smaller of the two. Here EASA’s 11:30 is 30 minutes tighter than the FAA’s 12:00, so EASA binds.

def reconcile(faa_minutes: int, easa_minutes: int) -> dict:
    binding = "EASA" if easa_minutes < faa_minutes else "FAA"
    return {
        "faa_minutes": faa_minutes,
        "easa_minutes": easa_minutes,
        "binding_regime": binding,
        "binding_minutes": min(faa_minutes, easa_minutes),
        "headroom_gap_minutes": abs(faa_minutes - easa_minutes),
    }


verdict = reconcile(faa, easa)
# {'faa_minutes': 720, 'easa_minutes': 690, 'binding_regime': 'EASA',
#  'binding_minutes': 690, 'headroom_gap_minutes': 30}
FAA 12:00 vs EASA 11:30 for a 05:30 four-sector report A 05:30 acclimatised report with four sectors resolves to a 720-minute FAA Part 117 Table B ceiling and a 690-minute EASA CS FTL.1.205 ceiling. The bars are drawn to scale from a shared zero; EASA is 30 minutes shorter and therefore binds the pairing. 0h 6h 12h FAA 117 12:00 · 720 min EASA 11:30 · 690 min · binds 30 min gap
Same report, same leg count, two ceilings: the FAA grants 12:00 while EASA grants 11:30, so a dual-jurisdiction pairing is bound to the tighter European limit.

Verification queries and assertions

assert faa_fdp_minutes(time(5, 30), 4) == 720
assert easa_fdp_minutes(time(5, 30), 4) == 690
v = reconcile(720, 690)
assert v["binding_regime"] == "EASA"
assert v["binding_minutes"] == 690
assert v["headroom_gap_minutes"] == 30

The assertions pin the exact outcome: the FAA is more permissive for this early four-sector day, the European ceiling binds, and the 30-minute gap is the operational headroom a scheduler loses by having to satisfy both regimes.

Failure modes and troubleshooting

Frequently Asked Questions

Why does EASA give a shorter FDP than the FAA for the same early report?

The two tables are built from different base values and different band widths. EASA’s 0530–0544 base of 12:30 for one to two sectors drops 30 minutes per additional sector, reaching 11:30 at four sectors, while the FAA holds a flat 12:00 across one to four segments in its wider 0500–0559 band before reducing. The regimes simply penalise WOCL encroachment on different schedules.

Does the answer change if the crew is not acclimatised?

Yes, materially — especially under EASA, where an “unknown” acclimatisation state selects a different, generally more conservative table column. The FAA continues to use the acclimatised theatre. That divergence is worked through in the rest requirements after a long-haul rotation scenario.

Is a 05:30 report always in the 0530–0544 EASA band?

Only when the crew is acclimatised to the reporting theatre. If they are acclimatised elsewhere, the applicable local time is different and may fall in another band entirely. Band selection is always on acclimatised local time.

Should the reconciliation ever pick the more permissive regime?

Not for a pairing that must be legal under both jurisdictions. The binding constraint is the tighter ceiling. Picking the more permissive one only makes sense when the operation is genuinely single-jurisdiction, in which case the other rule set should not be evaluated at all.

Back to FAA vs EASA Scenario Comparisons.