Patent Term Adjustment Calculation
Patent Term Adjustment (PTA) is the number of days the USPTO adds to a patent’s twenty-year term to compensate for examination delay attributable to the Office, computed under 35 U.S.C. § 154(b) as the sum of three delay categories, reduced by the days those periods overlap and by the days the applicant failed to conclude prosecution promptly. It is a signed arithmetic problem over prosecution-event dates, and getting it wrong costs — or invents — patent life measured in months.
The formula the Office applies is PTA = A + B + C − overlap − applicant delay, and every term in it is a defined period computed from dated events in the file history. Because PTA changes the patent’s expiration date, it changes the base date for maintenance-fee windows and for any term-of-patent calculation downstream, so it belongs in the same deterministic engine as every other deadline. This page decomposes each term, works a full numeric example, and gives a validated Python model, feeding the parent Automated Deadline Calculation & Rule Engines framework. The adjusted expiry it produces sets the clock for Maintenance Fee Docketing, and for national-stage cases the filing anchor comes from the National Phase Entry Date Logic layer. The B-delay term and its applicant deductions — the largest and most error-prone component — get their own deep treatment in Calculating PTA B-Delay with Applicant Deductions.
What Patent Term Adjustment Restores
A US utility patent expires twenty years after its earliest US non-provisional filing date, not twenty years from grant. When examination drags, that fixed expiry silently shortens the enforceable life of the patent — a case that takes five years to issue keeps only fifteen years of term. PTA is the statutory correction: for delay the Office caused, it adds days back onto the far end of the term, moving the expiration date later. For delay the applicant caused, it takes days away.
Because PTA is measured in individual days and can swing a patent’s expiry by a year or more, it is both high-value and high-risk. The Office computes an initial PTA determination and prints it on the issued patent, but that figure is frequently wrong — a miscounted applicant deduction, an overlap the Office failed to net, or an RCE period incorrectly excluded from the B-delay. An applicant has a narrow window to request reconsideration, so a docketing system that independently recomputes PTA and flags discrepancies is protecting real term, not just checking arithmetic.
The calculation is deterministic: given the file-history event dates, the same inputs must always produce the same number of days. That makes PTA a natural fit for a rule engine, provided every event date carries provenance and every rule cites the statute or regulation it implements.
Operational Action: Recompute PTA independently from the file-history dates on every issued patent and diff the result against the Office’s printed determination. Treat any discrepancy as a candidate for a request for reconsideration within the statutory window, not a rounding difference to ignore.
The Three Delay Categories
The gross adjustment is the sum of three independently defined delay categories. Each is a set of periods computed from specific events, and each cites a distinct subsection of 35 U.S.C. § 154(b) and 37 CFR § 1.702.
A-delays — the examination guarantees. Under § 154(b)(1)(A), the Office guarantees a set of prompt actions, and misses accrue day-for-day. The four guarantees are: a first Office action (or notice of allowance) within 14 months of the filing date (or the 35 U.S.C. § 371 date for a national stage entry); a reply to an applicant response within 4 months; an action within 4 months of a decision by the PTAB or a federal court; and issuance within 4 months of the issue-fee payment. Each guarantee that is missed contributes the days by which it was missed.
B-delay — the pendency guarantee. Under § 154(b)(1)(B), the Office guarantees issuance within 3 years of the actual US filing date. Days beyond three years accrue as B-delay, but the guarantee explicitly excludes time consumed by a request for continued examination, by interference or derivation proceedings, by a secrecy order, and by applicant-requested delay. B-delay is usually the largest single component and the one the Office most often miscounts.
C-delays — the adversarial periods. Under § 154(b)(1)©, delays due to interference or derivation proceedings, the imposition of a secrecy order, and successful appellate review each add the days consumed. These are comparatively rare but can be substantial when they occur.
| Category | Statute | Trigger | Measured period |
|---|---|---|---|
| A-delay (i) | § 154(b)(1)(A)(i) | Late first action | Days beyond 14 months from filing / 371 date |
| A-delay (ii) | § 154(b)(1)(A)(ii) | Late reply to response | Days beyond 4 months |
| A-delay (iii) | § 154(b)(1)(A)(iii) | Late action after PTAB/court decision | Days beyond 4 months |
| A-delay (iv) | § 154(b)(1)(A)(iv) | Late issuance after issue fee | Days beyond 4 months |
| B-delay | § 154(b)(1)(B) | Pendency over 3 years | Days beyond 3 years, less RCE/appeal/secrecy time |
| C-delay | § 154(b)(1)© | Interference, secrecy, successful appeal | Days consumed by the proceeding |
Operational Action: Encode each guarantee as its own rule with a citation and its own base-event field, and compute A, B, and C separately before combining. A single fused “days late” counter cannot correctly apply the B-delay exclusions or the overlap rule.
The Overlap Rule
The three categories are not simply added. Under 35 U.S.C. § 154(b)(2)(A) and 37 CFR § 1.703(f), to the extent that periods of delay attributable to different grounds overlap, the total adjustment does not exceed the actual number of calendar days of delay. In other words, a single calendar day that qualifies under both A-delay and B-delay is counted once, not twice.
The critical clarification came from Wyeth v. Kappos (Fed. Cir. 2010), which rejected the Office’s earlier practice of treating any A-delay and any B-delay as overlapping. The court held that A and B periods overlap only when they cover the same calendar days. Because the 14-month A-delay window falls early in prosecution and the three-year B-delay window falls late, they frequently do not overlap at all — and treating them as if they did understates PTA. A correct engine therefore computes the actual set of delay days per category and takes the size of their union, subtracting only the genuinely double-counted days.
Operational Action: Compute overlap as the intersection of the actual A, B, and C delay-day sets, following Wyeth — never as a blanket subtraction of the smaller of A and B. Store the per-category date ranges so the overlap can be recomputed and audited, not just the totals.
Applicant-Delay Reductions
The gross adjustment, net of overlap, is then reduced by applicant delay under 35 U.S.C. § 154(b)(2)© and 37 CFR § 1.704, which enumerates the circumstances in which an applicant “failed to engage in reasonable efforts to conclude prosecution.” The most common is § 1.704(b): a reply filed more than three months after the mailing of an Office action reduces PTA by the number of days from the end of that three-month period to the day the reply was filed. Section 1.704© lists more than a dozen further reductions — a late issue-fee payment, a supplemental reply, an amendment after a notice of allowance, abandonment and revival, and others.
These reductions are subtractive and can zero out an otherwise substantial adjustment. They are also the component most often disputed, because the Office’s characterization of an applicant filing as a reasonable-efforts failure is frequently contestable. The full mechanics of the reductions, including how they interact with the B-delay window, are treated in Calculating PTA B-Delay with Applicant Deductions.
Operational Action: Model each § 1.704 reduction as a discrete, dated event with its own citation, and keep the applicant-delay total separate from the guarantee totals in the audit record so a disputed reduction can be challenged line by line.
A Worked Example
Consider a utility application with the following file history. The dates are the events a docketing feed supplies; the arithmetic is what the engine computes.
- Filing date: 15 January 2019.
- First Office action mailed: 15 May 2020.
- Applicant reply filed: 1 October 2020 (in response to the 15 May 2020 action).
- Issue date: 15 July 2022.
A-delay. The 14-month guarantee for the first action runs to 15 March 2020. The action actually mailed on 15 May 2020, so A-delay (i) is the 61 days from 15 March to 15 May 2020. Assume the Office met the other three A guarantees, so A = 61 days.
B-delay. The three-year pendency guarantee runs to 15 January 2022. The patent issued on 15 July 2022, so raw B-delay is the 181 days from 15 January to 15 July 2022. With no RCE, interference, or secrecy period to exclude, B = 181 days.
C-delay. No interference, secrecy order, or appeal, so C = 0.
Overlap. The A-delay days (March–May 2020) and the B-delay days (January–July 2022) share no calendar days, so under Wyeth the overlap is 0.
Applicant delay. The three-month period to reply to the 15 May 2020 action ended on 15 August 2020. The reply was filed on 1 October 2020, so § 1.704(b) reduces PTA by the 46 days from 16 August to 1 October 2020.
| Term | Days | Basis |
|---|---|---|
| A-delay | +61 | § 154(b)(1)(A)(i), 14-month guarantee |
| B-delay | +181 | § 154(b)(1)(B), 3-year guarantee |
| C-delay | +0 | none |
| Overlap | −0 | § 154(b)(2)(A), no shared days |
| Applicant delay | −46 | § 1.704(b), reply > 3 months |
| Net PTA | 196 | added to the 20-year term |
The patent’s term therefore runs to 15 January 2039 (twenty years from filing) plus 196 days — to 30 July 2039.
Modelling PTA in Python
The reference model validates the file-history dates at the boundary with Pydantic, computes each guarantee with calendar-correct arithmetic using dateutil.relativedelta, and keeps A, B, C, overlap, and applicant delay as separate signed terms so the audit record can show every line.
from __future__ import annotations
from datetime import date
from dateutil.relativedelta import relativedelta
from pydantic import BaseModel, Field, model_validator
class PtaInputs(BaseModel):
"""Validated file-history dates for a single application."""
filing_date: date # actual US filing or 35 USC 371 date
first_action_mailed: date
reply_filed: date
issue_date: date
b_delay_exclusions: int = Field(default=0, ge=0) # RCE/appeal/secrecy days
@model_validator(mode="after")
def _chronology(self) -> "PtaInputs":
# Events must be in prosecution order; out-of-order dates are corrupt input.
if not (self.filing_date <= self.first_action_mailed
<= self.reply_filed <= self.issue_date):
raise ValueError("file-history dates are out of chronological order")
return self
def a_delay_first_action(inp: PtaInputs) -> int:
"""Days the first Office action missed the 14-month guarantee (154(b)(1)(A)(i))."""
guarantee = inp.filing_date + relativedelta(months=14)
return max(0, (inp.first_action_mailed - guarantee).days)
def b_delay(inp: PtaInputs) -> int:
"""Days pendency exceeded 3 years, less excluded periods (154(b)(1)(B))."""
guarantee = inp.filing_date + relativedelta(years=3)
raw = max(0, (inp.issue_date - guarantee).days)
return max(0, raw - inp.b_delay_exclusions)
def applicant_delay_reply(inp: PtaInputs) -> int:
"""Reduction for a reply filed more than 3 months out (37 CFR 1.704(b))."""
three_month = inp.first_action_mailed + relativedelta(months=3)
if inp.reply_filed <= three_month:
return 0
# Reduction runs from the day AFTER the 3-month date to the reply date.
return (inp.reply_filed - three_month).days
def net_pta(inp: PtaInputs, c_delay: int = 0, overlap: int = 0) -> dict[str, int]:
a = a_delay_first_action(inp)
b = b_delay(inp)
applicant = applicant_delay_reply(inp)
net = a + b + c_delay - overlap - applicant
return {
"a_delay": a, "b_delay": b, "c_delay": c_delay,
"overlap": overlap, "applicant_delay": applicant,
"net_pta": max(0, net), # PTA cannot go negative
}
Running the worked example through net_pta yields a_delay=61, b_delay=181, applicant_delay=46, net_pta=196, matching the hand calculation. The max(0, net) guard reflects the rule that applicant delay can zero out PTA but never produce a negative adjustment. Configuration and citations live outside the code:
# config/pta/rules.yaml
# Patent Term Adjustment rule constants and citations.
# 35 U.S.C. 154(b): https://www.uspto.gov/web/offices/pac/mpep/s2730.html
# 37 CFR 1.703 (period of adjustment): https://www.ecfr.gov/current/title-37/section-1.703
# 37 CFR 1.704 (applicant-delay reductions): https://www.ecfr.gov/current/title-37/section-1.704
pta:
a_delay_first_action_months: 14
a_delay_other_months: 4
b_delay_pendency_years: 3
applicant_reply_grace_months: 3 # 37 CFR 1.704(b)
overlap_rule: "wyeth_same_calendar_days" # A/B overlap only on shared days
pta_floor_days: 0 # applicant delay cannot make PTA negative
Operational Action: Pin the guarantee constants and the overlap convention as configuration cited to § 154(b) and 37 CFR §§ 1.703–1.704, and store the five component totals — not just the net — in the audit ledger so a reconsideration request can point at the exact term in dispute.
Failure Modes & Edge Cases
- Blanket overlap subtraction. Treating any A-delay and any B-delay as overlapping — the pre-Wyeth error — understates PTA whenever the delay periods fall on different calendar days, which is the common case. Compute overlap from the actual day sets.
- RCE time not excluded from B-delay. A request for continued examination stops the B-delay clock for the period of continued examination. Omitting the exclusion overstates B-delay and produces a figure the Office will reject; over-excluding understates the term the applicant is owed.
- Negative PTA. Applicant delay can exceed the gross adjustment. The result floors at zero — a patent never loses term through PTA — so the model must clamp, not report a negative.
- Wrong base date for national-stage cases. For a national stage entry the A-delay and B-delay clocks start from the 35 U.S.C. § 371 date, not the international filing date. Using the PCT filing date corrupts both guarantees; resolve the correct anchor through the National Phase Entry Date Logic layer.
- Ignoring the reconsideration window. The Office’s printed PTA can be challenged only within a fixed period after grant. A system that recomputes PTA but surfaces a discrepancy after that window has closed has lost the term it found.
Verification & Regression Testing
Pin the calculation against issued patents whose PTA is known and against deliberately adversarial file histories. Because the output drives the patent’s expiry and every downstream maintenance date, the tests assert each component, not just the net.
from datetime import date
def _example() -> PtaInputs:
return PtaInputs(
filing_date=date(2019, 1, 15),
first_action_mailed=date(2020, 5, 15),
reply_filed=date(2020, 10, 1),
issue_date=date(2022, 7, 15),
)
def test_worked_example_components() -> None:
result = net_pta(_example())
assert result["a_delay"] == 61
assert result["b_delay"] == 181
assert result["applicant_delay"] == 46
assert result["net_pta"] == 196
def test_applicant_delay_can_zero_out_pta() -> None:
inp = _example().model_copy(update={"reply_filed": date(2022, 7, 1)})
# A very late reply drives the deduction past the gross adjustment.
assert net_pta(inp)["net_pta"] == 0
def test_on_time_reply_has_no_deduction() -> None:
inp = _example().model_copy(update={"reply_filed": date(2020, 8, 1)})
assert applicant_delay_reply(inp) == 0
Operational Action: Maintain a regression corpus of real issued patents with Office-determined PTA and assert each component matches, so a change to the guarantee math or the overlap rule is caught before it silently misstates term across the portfolio.
Operational Action Summary
Operational Action: Compute A, B, and C separately, apply the Wyeth overlap rule on actual shared calendar days, then subtract § 1.704 applicant delay — storing all five components, not just the net, for audit.
Operational Action: Recompute PTA independently for every issued patent, diff against the Office determination, and route discrepancies to counsel while the reconsideration window is open.
Operational Action: Feed the adjusted expiry into Maintenance Fee Docketing so annuity and term-of-patent dates reflect the corrected expiration, not the unadjusted twenty-year date.
Frequently Asked Questions
What is the difference between A-delay and B-delay in patent term adjustment?
Why can't I just add A, B, and C delays together to get total PTA?
How does a late applicant reply reduce patent term adjustment?
The USPTO printed a PTA figure on my patent — should I recompute it?
Related
- Automated Deadline Calculation & Rule Engines — the framework this calculation plugs into.
- Calculating PTA B-Delay with Applicant Deductions — the B-delay term and its § 1.704 reductions in depth.
- Maintenance Fee Docketing — the annuity windows the adjusted expiry resets.
- National Phase Entry Date Logic — the § 371 anchor the A and B clocks start from for national-stage cases.