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
- Python 3.11+ — for
datetime.timebanding andzoneinfo. - Both FDP tables seeded — FAA §117.13 Table B and the EASA CS FTL.1.205 acclimatised table, loaded as effective-dated rows.
- Acclimatised report time — the crew member’s local time in the theatre they are acclimatised to, not the departure station’s wall clock.
- Sector vs segment parity — confirm the leg count is expressed consistently; the FAA counts flight segments and EASA counts sectors, which for a standard multi-leg day are the same integer.
- Regulatory versions pinned — the eCFR amendment date for Part 117 and the ORO.FTL revision for the EASA table.
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}
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
- Using departure-station wall time instead of acclimatised time. Both tables key on the crew member’s acclimatised local time; feeding the origin airport’s clock for a crew acclimatised elsewhere reads the wrong band. Remediation: resolve the acclimatised theatre first, then band the report.
- Applying the FAA band widths to the EASA table. The FAA uses a single 0500–0559 band; EASA subdivides the early morning into 15-minute bands. A 05:30 report reads 0500–0559 under the FAA but 0530–0544 under EASA. Remediation: keep the band edges per jurisdiction, never shared.
- Counting sectors and segments differently. A tag-along positioning leg counted as a sector under one regime but not the other shifts the column. Remediation: fix the leg-count definition against the crew duty time taxonomy before either lookup.
- Reconciling by the wrong direction. For dual compliance the binding limit is the minimum of the two ceilings, not the maximum; taking the larger would authorise an illegal EASA duty. Remediation:
min()on the ceilings, always. - Ignoring extensions. The §117.19 two-hour extension and the EASA commander’s discretion sit on top of these base ceilings and are governed separately; folding them into the base lookup overstates the scheduled limit. Remediation: resolve the base ceiling here, apply extensions as a distinct, logged step.
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.
Related
- FAA vs EASA Scenario Comparisons — the parent section of head-to-head scenarios.
- Rest Requirements After a Long-Haul Rotation — where acclimatisation state changes the verdict.
- Regulatory Reference Tables — the queryable FDP tables both lookups read.
- FAA Part 117 Rule Schema Design — the American Table B schema.
- EASA FTL Compliance Frameworks — the European CS FTL.1.205 table and acclimatisation state.
Back to FAA vs EASA Scenario Comparisons.