Calculating PTA B-Delay with Applicant Deductions
B-delay is the component of Patent Term Adjustment that compensates an applicant for total prosecution pendency exceeding three years, under 35 U.S.C. § 154(b)(1)(B) — but the raw count of days past the three-year mark is only the starting point. Statutory exclusions carve time back out of the window, and applicant-delay deductions under 37 CFR § 1.704 subtract further, so the number that actually reaches the patent is the raw window less both.
B-delay is usually the largest single PTA term and the one the USPTO most often miscounts, which makes an independent recomputation worth the effort. This page isolates the B-delay arithmetic from the fuller Patent Term Adjustment Calculation treatment: what the three-year guarantee measures, exactly what is excluded from its window, how § 1.704 applicant deductions bite against it, and one Python function that computes the net. Getting B-delay right is what keeps the adjusted expiry — and every maintenance date derived from it — defensible.
Why B-Delay Is the Hardest PTA Term
A-delays are event-anchored: each is the gap between a specific Office action and its guarantee date, and once you have the two dates the arithmetic is trivial. B-delay is different because it is cumulative and porous. It measures total pendency against a single three-year line, but the statute then punches holes in that window for whole categories of time — continued examination, adversarial proceedings, and applicant-requested delay — and § 1.704 subtracts still more for reasonable-efforts failures. Every one of those carve-outs is a date range that has to be resolved from the file history, and a single mishandled range moves the term by weeks.
The stakes are asymmetric. Understate B-delay and the patent loses enforceable life the applicant was owed; overstate it and the Office rejects the figure, or worse, an adjustment that survives to grant becomes a validity target. The USPTO’s own determination is not a safe default here — the treatment of RCE time in particular has been litigated repeatedly, and the Office has recomputed thousands of patents after losing. An independent B-delay computation from the raw dates is the only way to know the printed number is right.
Operational Action: Resolve every excluded and deducted period as an explicit date range with its own citation, not as a lump-sum “days off” figure. Only ranges can be audited against the file history and challenged individually when the Office and your engine disagree.
What Is Excluded from the B-Delay Window
The three-year guarantee under § 154(b)(1)(B) does not count all pendency. The statute excludes three kinds of time from the window before any applicant deduction is applied, and 37 CFR § 1.703(b) sets out how the period is computed.
| Excluded period | Authority | Note |
|---|---|---|
| Time consumed by continued examination (RCE) | § 154(b)(1)(B)(i) | Excluded only up to allowance, per Novartis v. Lee (Fed. Cir. 2014) |
| Interference / derivation, secrecy order, appellate review | § 154(b)(1)(B)(ii) | Same periods also generate C-delay; watch for double effect |
| Any time consumed by applicant-requested delay | § 154(b)(1)(B)(iii) | Distinct from § 1.704 reasonable-efforts deductions |
The RCE exclusion is the perennial trap. The Office long treated all time after an RCE was filed — through to issuance — as excluded from B-delay. The Federal Circuit in Novartis v. Lee rejected that: RCE time is excluded only up to the mailing of the notice of allowance. Any time after allowance, even if an RCE was filed earlier in prosecution, counts toward B-delay. A B-delay engine that excludes RCE time all the way to issue silently understates the term on every case with a late-prosecution RCE.
Operational Action: Cap the RCE exclusion at the notice-of-allowance date, never the issue date. Store the allowance date as a first-class file-history event so the exclusion range is bounded correctly under Novartis.
Applicant Deductions Against B-Delay
After the exclusions define the window, applicant-delay deductions under 37 CFR § 1.704 reduce the adjustment further. The most common is § 1.704(b): where an applicant takes more than three months to reply to an Office action or notice, PTA is reduced by the days from the end of that three-month period to the date the reply was actually filed. Section 1.704© then lists a long series of additional reductions — a late issue-fee payment, a supplemental reply, a paper filed after a notice of allowance, submission of an information disclosure statement after a reply, and abandonment followed by revival, among others.
Two points matter for a correct computation. First, these deductions are not the same as the § 154(b)(1)(B)(iii) applicant-requested-delay exclusion; the exclusion removes time from the pendency window, while the § 1.704 deduction subtracts from the computed adjustment. They can both apply, and they are recorded separately. Second, the deductions are applied to the net adjustment after overlap, and applicant delay can drive the total PTA to zero — but never below it. A B-delay of 200 days with 250 days of applicant delay yields zero PTA, not negative fifty.
Operational Action: Keep the § 154(b)(1)(B)(iii) exclusion and the § 1.704 deduction as separate signed inputs. Conflating them either double-subtracts the same applicant conduct or misses one of the two effects entirely.
One Function: B-Delay Net of Deductions
The function below computes net B-delay from the file-history dates. It resolves the three-year guarantee with calendar-correct arithmetic, bounds the RCE exclusion at allowance per Novartis, subtracts the other excluded periods and the § 1.704 applicant deductions, and floors the result at zero. It is pure and returns the components so each can be audited.
from __future__ import annotations
from datetime import date
from dateutil.relativedelta import relativedelta
from pydantic import BaseModel, Field, model_validator
class BDelayInputs(BaseModel):
"""File-history dates and periods needed for the B-delay term."""
filing_date: date # actual US filing or 35 USC 371 date
allowance_date: date # notice of allowance mail date
issue_date: date
rce_filed_date: date | None = None # request for continued examination
other_excluded_days: int = Field(default=0, ge=0) # interference/secrecy/appeal
applicant_deduction_days: int = Field(default=0, ge=0) # 37 CFR 1.704 total
@model_validator(mode="after")
def _chronology(self) -> "BDelayInputs":
if not (self.filing_date <= self.allowance_date <= self.issue_date):
raise ValueError("filing <= allowance <= issue must hold")
if self.rce_filed_date and not (
self.filing_date <= self.rce_filed_date <= self.allowance_date
):
raise ValueError("RCE date must fall between filing and allowance")
return self
def net_b_delay(inp: BDelayInputs) -> dict[str, int]:
"""Net B-delay = (pendency over 3 years) - excluded time - applicant delay."""
guarantee = inp.filing_date + relativedelta(years=3) # 3-year line
raw_window = max(0, (inp.issue_date - guarantee).days) # days past 3 yrs
# RCE time is excluded only UP TO allowance (Novartis v. Lee), never to issue.
rce_excluded = 0
if inp.rce_filed_date is not None:
rce_excluded = max(0, (inp.allowance_date - inp.rce_filed_date).days)
excluded = rce_excluded + inp.other_excluded_days
window_after_exclusions = max(0, raw_window - excluded)
net = max(0, window_after_exclusions - inp.applicant_deduction_days)
return {
"raw_window": raw_window,
"rce_excluded": rce_excluded,
"other_excluded": inp.other_excluded_days,
"applicant_deduction": inp.applicant_deduction_days,
"net_b_delay": net, # floored at zero
}
Worked through a concrete case — filed 15 January 2019, allowed 1 May 2022, issued 15 July 2022, an RCE filed 1 February 2022, 30 other excluded days, and 46 days of applicant deduction — the raw window is 181 days past the three-year line, the RCE exclusion is the 89 days from 1 February to 1 May 2022, and net B-delay is 181 − 89 − 30 − 46 = 16 days. The regression suite pins each component:
from datetime import date
def test_net_b_delay_components() -> None:
inp = BDelayInputs(
filing_date=date(2019, 1, 15),
allowance_date=date(2022, 5, 1),
issue_date=date(2022, 7, 15),
rce_filed_date=date(2022, 2, 1),
other_excluded_days=30,
applicant_deduction_days=46,
)
result = net_b_delay(inp)
assert result["raw_window"] == 181
assert result["rce_excluded"] == 89
assert result["net_b_delay"] == 16
def test_deductions_floor_at_zero() -> None:
inp = BDelayInputs(
filing_date=date(2019, 1, 15),
allowance_date=date(2022, 5, 1),
issue_date=date(2022, 7, 15),
applicant_deduction_days=500, # exceeds the window
)
assert net_b_delay(inp)["net_b_delay"] == 0
Operational Action: Store the allowance date and each RCE date as explicit events so the Novartis-bounded exclusion recomputes correctly, and assert the raw window, the RCE exclusion, and the net separately in tests — a regression that mis-bounds the RCE exclusion is invisible if you only check the net.
Known Gotchas
- Excluding RCE time all the way to issue. The single most common B-delay error. After Novartis v. Lee, RCE exclusion stops at the notice of allowance; time after allowance counts. Bound the exclusion at the allowance date.
- Using the international filing date for a national-stage case. The B-delay clock starts at the 35 U.S.C. § 371 date, not the PCT filing date. Resolve the correct anchor before computing the three-year line.
- Merging the exclusion and the deduction. The § 154(b)(1)(B)(iii) applicant-requested-delay exclusion and the § 1.704 reasonable-efforts deduction are distinct and can both apply. Keep them as separate inputs so neither is missed or double-counted.
- Forgetting the overlap step. Net B-delay is not the final PTA. It is summed with A and C delays and then reduced by the days that overlap under the rule set out in the parent Patent Term Adjustment Calculation. B-delay net of deductions is an intermediate, not the answer printed on the patent.
- Letting B-delay go negative. Exclusions and deductions can exceed the raw window. The term floors at zero; a negative intermediate is a bug, not a valid input to the sum.
Frequently Asked Questions
How is the B-delay window measured?
Is all time after an RCE excluded from B-delay?
What is the difference between a B-delay exclusion and an applicant deduction?
Can applicant delay make B-delay negative?
Related
- Patent Term Adjustment Calculation — the parent framework that sums A, B, and C and nets overlap.
- National Phase Entry Date Logic — the § 371 anchor the three-year clock starts from.
- Maintenance Fee Docketing — the annuity windows the adjusted expiry resets.
- Automated Deadline Calculation & Rule Engines — the engine this term feeds.
↑ Back to Patent Term Adjustment Calculation