Was this article helpful?
Code aging: how a fault clears itself after 40 warm-up cycles
Codes do not stay forever. The ECU counts successful warm-ups and eventually forgets — which is useful to know before you buy a used car.
A stored fault code is not permanent. If the fault stops occurring, the ECU counts successful drive cycles and eventually deletes the code by itself.
Understanding that counter explains several things: why a lamp went out on its own, why a code disappeared before you could investigate, and why a clean scan on a used car is worth less than it looks.
Related: clearing codes: when and why and two-trip logic and MIL illumination.
The typical sequence
The lamp goes out after roughly three consecutive drive cycles in which the monitor ran and passed.
The code is deleted after roughly 40 warm-up cycles without the fault recurring.
Permanent codes are separate and clear only when the ECU has verified the repair through its own monitor: Mode 0A permanent DTCs.
Exact numbers vary by manufacturer and by fault type, but the structure is standard.
What counts as a warm-up cycle
Specifically defined, and stricter than “a journey”.
A warm-up cycle generally requires the coolant temperature to rise by a defined amount from start and to exceed a threshold — typically around 70 °C — with the engine having been genuinely cold at start.
Short trips do not count. A car used for four-kilometre journeys may take months to accumulate 40 warm-up cycles, so codes persist far longer than the number suggests.
Conversely, a car doing daily longer commutes ages codes quickly.
Short trips and engine damage.
Why this matters when buying
Here is the practical consequence.
A used car with no stored codes may simply have driven long enough to forget them. No clearing, no dishonesty — just time.
That is why a single scan is weak evidence, and why the other indicators matter:
| Check | What it reveals |
|---|---|
| Stored codes | Current confirmed faults |
| Pending codes | Faults detected once, developing |
| Permanent codes | Confirmed faults not yet verified as fixed |
| Readiness monitors | Whether codes were cleared recently |
| Freeze frame | Conditions when a fault occurred |
Readiness plus permanent codes is the pair that catches a recent clear. Aging cannot fake those.
Used car pre-purchase OBD check.
Why aging exists at all
Reasonable design, not an oversight.
A code from a genuinely one-off event — a tank of poor fuel, a very cold morning, driving through deep water — should not follow the vehicle forever. Otherwise every scan would return a decade of historical noise, and the current fault would be lost in it.
Aging keeps the code memory relevant to the present.
Bad fuel quality OBD symptoms and driving through flood water.
The trap for your own diagnosis
Do not lose an intermittent fault to aging.
An intermittent that occurs every few weeks may age out between occurrences, so every scan comes back clean and the problem seems to have gone.
The defence:
- Record the code and its freeze frame the moment you find it.
- Note the conditions — temperature, speed, load, weather.
- Do not clear it unless you need to test whether it returns.
- Check pending codes, which catch detections that never confirm.
Diagnosing intermittent faults with OBD.
The freeze frame is the part that hurts to lose
A stored code comes with a snapshot of engine conditions at the moment it set: RPM, load, coolant temperature, speed, fuel trims.
That snapshot is often more useful than the code itself, and it goes when the code goes — whether by aging or by clearing.
OBD freeze frame data explained.
Practical habits
- Scan monthly, and keep a record. Two minutes each time.
- Screenshot anything you find before clearing.
- Do not clear before an emissions test — it resets readiness and guarantees a fail.
- On a used car, read readiness and permanent codes, not just stored ones.
Try it on the free tier of the app — pair an ELM327 adapter and keep a scan history rather than relying on what is stored today. Codes age out; your own records do not.
Comments …
Loading…