Patent Expiration Rules
Based on the fees paid, we can determine the validity of a patent. Each fee is coded and the DaysIncrement variable indicates how many more days a patent is valid for after that fee is paid. The DaysDuration is how many total days the patent has been valid for since it's grant date. DaysDuration is the key variable, for each fee paid, we add DaysIncrement to DaysDuration. The DaysDuration past the grant date is the validity of the patent.
NOTE: This version does not distinguish when to count from filedate or grant date - it only uses grantdate. Prior to XXX (TO BE FILLED IN BY AVESH), patents had statutory terms of 18 yrs from grant. Subsequent to XXX patents have 20 years from application.
ALSO- keep in mind this is in *allpatentsprocessed* DB, not in the *patent* database.
Located in
Z:\LBO\Clean\patentExpirationRules.txt
FeeCode | Description | DaysIncrement | DaysDuration |
---|---|---|---|
EXP. | Patent Expired for Failure to Pay Maintenance Fees. | 0 | 0 |
EXPX | Patent Reinstated After Maintenance Fee Payment Confirmed. | 0 | 0 |
M1551 | Payment of Maintenance Fee, 4th Year, Large Entity. | 1460 | 2920 |
M1552 | Payment of Maintenance Fee, 8th Year, Large Entity. | 1460 | 4380 |
M1553 | Payment of Maintenance Fee, 12th Year, Large Entity. | 2920 | 7300 |
M1559 | Payment of Maintenance Fee under 1.28(c). | 0 | 0 |
M170 | Payment of Maintenance Fee, 4th Year, PL 96-517. | 1460 | 2920 |
M171 | Payment of Maintenance Fee, 8th Year, PL 96-517. | 1460 | 4380 |
M172 | Payment of Maintenance Fee, 12th Year, PL 96-517. | 2920 | 7300 |
M173 | Payment of Maintenance Fee, 4th Year, PL 97-247. | 1460 | 2920 |
M174 | Payment of Maintenance Fee, 8th Year, PL 97-247. | 1460 | 4380 |
M175 | Payment of Maintenance Fee, 12th Year, PL 97-247 | 2920 | 7300 |
M183 | Payment of Maintenance Fee, 4th Year, Large Entity. | 1460 | 2920 |
M184 | Payment of Maintenance Fee, 8th Year, Large Entity. | 1460 | 4380 |
M185 | Payment of Maintenance Fee, 12th Year, Large Entity. | 2920 | 7300 |
M2551 | Payment of Maintenance Fee, 4th Yr, Small Entity. | 1460 | 2920 |
M2552 | Payment of Maintenance Fee, 8th Yr, Small Entity. | 1460 | 4380 |
M2553 | Payment of Maintenance Fee, 12th Yr, Small Entity. | 2920 | 7300 |
M273 | Payment of Maintenance Fee, 4th Yr, Small Entity, PL 97-247. | 1460 | 2920 |
M274 | Payment of Maintenance Fee, 8th Yr, Small Entity, PL 97-247. | 1460 | 4380 |
M275 | Payment of Maintenance Fee,12th Yr, Small Entity, PL 97-247. | 2920 | 7300 |
M283 | Payment of Maintenance Fee, 4th Yr, Small Entity. | 1460 | 2920 |
M284 | Payment of Maintenance Fee, 8th Yr, Small Entity. | 1460 | 4380 |
M285 | Payment of Maintenance Fee, 12th Yr, Small Entity. | 2920 | 7300 |
M3551 | Payment of Maintenance Fee, 4th Year, Micro Entity. | 1460 | 2920 |
M3552 | Payment of Maintenance Fee, 8th Year, Micro Entity. | 1460 | 4380 |
M3553 | Payment of Maintenance Fee, 12th Year, Micro Entity. | 2920 | 7300 |
Building Start and End Table
Created PatentExpirationRules table using the data shown in the table above. Maintfeeevents is a table with all of the USPTO data on fees paid. The earliest grantdate in this dataset is 1981-09-01 and the latest is 2016-06-28. The earliest feedate is 1980-12-19 and the latest feedate is 5000-01-1 (NO THIS IS NOT A TYPO- someone please fix why we have fees being paid in the year 5000). The second latest feedate is 2016-06-13.
SQL steps are located at
E:\McNair\Projects\LBO\Clean\Building the Patent Start End Table.sql
/* These are instructions for building the patentstartend table, which identifies for each patent (number) the dates at which it is granted and at which it expired. It uses a database of all maintenance fee events and a list of the types of maintenance fee events and their effect the length of patent life */ --First, we need to import the table of Maintenance fee events (from copy in Z:\LBO\Clean, originally from Z:\USPTO_Consolidated\Maint_Fee_Events) CREATE TABLE Maintfeeevents ( patentNumber VARCHAR(7) NOT NULL, appNumber VARCHAR(8) NOT NULL, smallEntity VARCHAR(1) NOT NULL, appFilingDate DATE NOT NULL, grantDate DATE NOT NULL, feeDate DATE NOT NULL, feeCode VARCHAR(5) NOT NULL ); \COPY Maintfeeevents FROM 'MaintFeeEvents_20160613.txt' WITH DELIMITER AS E'\t' HEADER NULL AS '' CSV; --Now import table of fee codes (and the duration of the extensions) from (Z:\LBO\Clean) --daysDuration represents the number of days from grantdate that patent will remain active due to maintenance fee event --I.e., 8 years for 4th year extension, 12 years for 8th year extension, 20 years for 12th year extension --Note that we give the expiration events a value of 0 since these can occur after any such extension (or lack thereof). CREATE TABLE PatentExpirationRules ( feeCode VARCHAR(5) NOT NULL, description VARCHAR(255) NOT NULL, daysIncrement INTEGER NOT NULL, daysDuration INTEGER NOT NULL ); \COPY PatentExpirationRules FROM 'patentExpirationRules.txt' WITH DELIMITER AS E'\t' HEADER NULL AS CSV; --We can approximate the actual expiration date by taking the max of daysDuration and adding that number of days to the original grantdate SELECT M.patentnumber, MAX(M.grantdate) as grantdate, MAX(GREATEST(M.grantdate + P.daysDuration, M.grantdate + 1460)) as expdate INTO patentstartend FROM maintfeeevents as M RIGHT JOIN patentexpirationrules as P ON M.feecode = P.feecode GROUP BY M.patentnumber ; /* There is an alternative way to do this using fee expiration events; however, there are two problems: 1) The USPTO may have accidentally omitted some expiration events 2) Sometimes there are late payments; this leads to reinstatement of the patent. Should be solved by taking last expiration event, but there are potential problems: 2a) See problem 1 2b) Might not have expiration event at conclusion of 20 years (after all three extensions expire) */
Updating the Patent Term Calculcations
We need to take into account the change in patent term. See https://en.wikipedia.org/wiki/Term_of_patent_in_the_United_States
- Patent filed after June 8 1995: term of 20 years from US filing date (based on fees paid)
- Pending on June 8 1995 or issued after June 7 1978 but not expired before june 8 19985 have the term max(17 years from issue date, 20 years from date of filing)
- Patents issued before June 7 1978 have term of 17 years from date of issue
- Maintenance Fees at 3.5, 7.5, and 11.5 years from date of issue. aka 4, 8 , 12
So patent filed after june 8 1995
:add 4 years (1460 days) to issue date to start
:add 4 years to issue date after 3.5yr fee
:add 4 years to issue date after 7.5 year fee
:add difference up to 20 years from filing (application) date after 11.5 year fee
- Patent issued between june 7 1978 and june 8 1995 will have the term which max(file date + 20 years, issue date + 17 years)
- for those patents using 20 years + file (application) date, same as after june 8 1995
- for those using 17 years + issue date
- add 4 years to issue date to start
- add 4 years to issue date after 3.5yr fee
- add 4 years to issue date after 7.5yr fee
- add 5 years to issue date after 11.5 yr fee
- for those using 17 years + issue date
- Use same method as above for patents issued before June 7 1978
- For patents filed after May 28,2000
- if issue date more than 3 years after file date, then term of patent extended by number of days exceeding 3 years
Use the new fee data for this