PULSCAR ANALYSIS — WHAT 1,899 NHTSA COMPLAINTS THAT MENTION A THERMOSTAT ACTUALLY DESCRIBE PulsCar analysis of NHTSA public data, September 2026. License: CC BY 4.0. Attribution: "PulsCar analysis of NHTSA public data, September 2026." Published alongside https://www.pulscar.io/blog/p0128-code ------------------------------------------------------------------------------ 0. WHY THIS SET AND NOT THE 110 ------------------------------------------------------------------------------ The article already counts the complaints that name the code itself: 110 reports containing the exact string P0128, of which 65 come from three GM crossovers. That count is not recomputed here. 110 is a small number, and it is small for a reason worth stating: the people who type a five-character code into a federal complaint form are the ones who were told the code by a dealer. Most owners describe the part instead. So this file takes the wider set — every complaint whose narrative mentions a THERMOSTAT at all — and asks what that population is really made of. The answer turns out to be the most useful single fact on the page, and it is not what a P0128 owner expects. The PulsCar Check Engine Code Index separately counts the manufacturer bulletins naming P0128 (125 distinct bulletins, 13 manufacturer groups, at least 74% software updates). Those figures are not recomputed here either: https://www.pulscar.io/blog/check-engine-code-index ------------------------------------------------------------------------------ 1. SOURCE FILES AND DATE RANGE ------------------------------------------------------------------------------ COMPLAINTS NHTSA ODI complaint flat files COMPLAINTS_RECEIVED_2015-2019, _2020-2024, _2025-2026. https://static.nhtsa.gov/odi/ffdd/cmpl/CMPL.txt (field layout) 777,040 distinct vehicle complaints (product type V), de-duplicated by ODI report number, received 1 January 2015 to 8 September 2026. RECALLS https://static.nhtsa.gov/odi/ffdd/rcl/RCL.txt (field layout) TSBs https://static.nhtsa.gov/odi/ffdd/tsbs/TSBS.txt (field layout) Analysis run 18 September 2026. No third-party data was used. ------------------------------------------------------------------------------ 2. THE THERMOSTAT COMPLAINT SET ------------------------------------------------------------------------------ SELECT c.* FROM complaints c JOIN complaints_fts f ON f.rowid = c.rowid WHERE complaints_fts MATCH 'thermostat'; then confirmed with a case-insensitive regex on the narrative. -> 1,899 complaints. No exclusions beyond that: no make, model or year filter, because the question is what the whole population looks like. Note that this set includes complaints in which the thermostat is mentioned only in passing — that is measured in section 4 rather than assumed away. Baseline for comparison, computed on all 777,040 complaints: towed 39,739 (5.11%) crash 33,940 (4.37%) fire 14,121 (1.82%) odometer stated 392,935, median 70,000 miles Thermostat set, 1,899 complaints: towed 85 (4.48%) crash 18 (0.95%) fire 37 (1.95%) odometer stated 922, median 78,728 miles ------------------------------------------------------------------------------ 3. HOT VERSUS COLD — THE FINDING ------------------------------------------------------------------------------ Two wording families were applied to the narrative. OVERHEATING family: overheat | over-heat | over heated | ran hot | running hot | red zone | steam(ing)? (from|out) | temperature (gauge|needle) (went|shot|climb|rose|spiked) | boil(ed|ing) over -> 614 of 1,899 = 32.3% towed 46 (7.49%), crash 2, fire 13 (2.12%) odometer stated 316, median 90,000 miles RUNS-COLD / NO-HEAT family: (no heat) | (not blow* (any )?(hot|warm) air) | (blow* cold air) | (runs? (too )?cold) | (running (too )?cold) | (never warms? up) | (slow(er)? to warm) | (take* (a )?long* to warm) | (stuck open) | (gauge (stays|stayed|remains?|never) ... (cold|low|on c)) | (engine (does not|doesn't|won't) (warm|reach)) | (heater (blows|blowing) cold) | (no cabin heat) | (lack of heat) -> 87 of 1,899 = 4.6% towed 0, crash 0, fire 0 odometer stated 36, median 80,000 miles Both families in one narrative: 15. Neither family: 1,213 (these describe leaks, water pumps, repair disputes, parts availability and so on without using either vocabulary). THE FINDING, STATED CAREFULLY. Among complaints that mention a thermostat, overheating wording outnumbers running-cold wording by about seven to one, the overheating subset is towed at 7.49% against a 5.11% baseline for all complaints, and not one of the 87 running-cold reports carries the towed, crash or fire flag. (Flags, not narratives: an owner can describe arranging a tow without the report being flagged.) What this IS evidence of: what reaches a federal safety database. NHTSA collects safety complaints. A thermostat that sticks shut strands people and is reported; a thermostat that sticks open costs heat and fuel economy and mostly is not. What this is NOT evidence of: how often thermostats fail one way or the other. There is no denominator here. Do not read "seven to one" as a failure ratio. ------------------------------------------------------------------------------ 4. READING THE RUNS-COLD SUBSET: 30 OF THE 87 ------------------------------------------------------------------------------ Thirty of the 87 were drawn at random (Python random.seed(19), random.sample) and read end to end. Each was assigned exactly one category: 15 an engine genuinely running cold — a thermostat named as stuck open, a temperature gauge that stays low, P0128 or P0126 named, a warm-up that never completes 11 a CABIN HEAT failure with a different cause — a heater core, a blend door or an actuator, several of them one-sided (warm on the driver's side, cold on the passenger's), in which the thermostat is mentioned only as something already replaced or ruled out 3 an overheating story in which the heat failed because the coolant was gone 1 off target Observed precision of the runs-cold wording for "the engine is running cold": 15 of 30, or roughly half. The dominant false positive is the phrase "no heat", which owners use for a cold cabin regardless of what the engine is doing. This is why the article does not scale 15/30 up to the 87 and publish a number: it reports the read as a read. DIAGNOSTIC CONSEQUENCE, which is why this categorization is worth publishing at all: "no heat" and "the engine runs cold" are different complaints with different parts behind them, and the complaint file shows owners conflating them. A gauge that reaches normal while the cabin stays cold is not a P0128 story. Per-complaint categories are published in runs-cold-sample-read.csv. This is one reader's judgement; a second reader would not assign every borderline case identically. No VIN, name, city or dealer is published. ------------------------------------------------------------------------------ 5. RECALLS: A NULL RESULT ------------------------------------------------------------------------------ SELECT DISTINCT campaign FROM recalls WHERE defect LIKE '%thermostat%' OR component LIKE '%THERMOSTAT%' OR remedy LIKE '%thermostat%'; -> 3 campaigns: Blue Bird 14V-313 and 14V-314 (2008-2013 All American rear engine school and non-school buses) and Keystone RV 16V-600 (2011-2017 Bullet and Passport travel trailers). Not one is a passenger vehicle. SELECT DISTINCT campaign FROM recalls WHERE defect LIKE '%coolant temperature sensor%' OR remedy LIKE '%coolant temperature sensor%'; -> 0 campaigns. Null results are worth publishing when a reader might otherwise assume the opposite. Across every safety recall in the file for 1 January 2015 to 8 September 2026, no passenger-vehicle campaign names a thermostat or a coolant temperature sensor as the defect. An engine that runs cold is an emissions and comfort problem, not a crash risk, so it is handled through warranty extensions and special coverages rather than recalls — which is exactly where the documents in section 6 live, and why checking coverage matters more than checking recalls for this code. ------------------------------------------------------------------------------ 6. PRIMARY DOCUMENTS OPENED FOR THIS PASS (18 September 2026) ------------------------------------------------------------------------------ Mazda Special Service Program D8, owner letter dated November 2024, NHTSA document 11012344. Vehicles: 2018-2025 CX-5, 2019-2023 Mazda3, 2019-2022 CX-3, 2018-2021 Mazda6, 2020-2023 CX-30. "The warranty coverage for an applicable repair has been extended to 15 years (180 months) /150,000 miles (240,000 km) whichever comes first, from the original warranty start date." Cause named: "the fail-safe thermostat being stuck open", setting DTC P0126. Symptoms listed by Mazda: "Engine takes longer to warm up. Engine temperature gauge fluctuates. Low coolant temperature indicator (blue) light stays on longer or turns on while driving. Poor heater performance, especially at idle." Reimbursement for owners who already paid is handled at mazdareimbursement.com against the VIN. The letter also limits the program: "If the check engine light illumination is determined to be unrelated to the fail-safe thermostat being stuck open, the inspection and repair are not covered under this program." https://static.nhtsa.gov/odi/tsbs/2025/MC-11012344-0001.pdf Mazda dealer letter, TSB 01-003/25 repair-procedure and parts update, dated 4 December 2025, NHTSA document 11027023 (received January 2026). "Effective December 8th all repairs applicable to TSB 01-003/25 or SSPD8 must follow the new repair procedure. The repair now replaces the thermostat with a dummy plug for the coolant control valve (CCV) along with a required software update for the PCM." Dealers are told to quarantine existing thermostat stock for return, that a missing software-update record will cause the warranty claim to be rejected, and that "Failure to perform the software update could also potentially damage the engine which would not be covered by warranty." https://static.nhtsa.gov/odi/tsbs/2026/MC-11027023-0001.pdf Mazda Dealer Re-Work DRW59, dated 4 April 2026, NHTSA document 11030697: certain 2026 CX-30 and Mazda3, "the check engine light may illuminate with DTC P0126:00 (Thermostat stuck open) stored". https://static.nhtsa.gov/odi/tsbs/2026/MC-11030697-0001.pdf Each document was downloaded from static.nhtsa.gov and read as text on 18 September 2026; every model-year range, date, limit and quoted phrase above comes from the document itself. ------------------------------------------------------------------------------ 7. FILES IN THIS FOLDER ------------------------------------------------------------------------------ thermostat-complaints-by-make-and-model.csv all 1,899 by make and model thermostat-complaints-hot-vs-cold.csv subsets, severity flags, odometer runs-cold-sample-read.csv 30 read in full, categorized method.txt this file ------------------------------------------------------------------------------ 8. LIMITATIONS IN ONE PLACE ------------------------------------------------------------------------------ * Complaints are self-reported and unaudited; they are not failure rates. * There is no denominator: no sales or registration figure is in this data, so no model can be called better or worse than another from these counts. * Wording families under-count. An owner who does not use the word is not counted, and 1,213 of the 1,899 use neither vocabulary. * The runs-cold wording is about half precise for "the engine runs cold"; that is measured in section 4 rather than assumed. * Odometer is missing for most reports (922 of 1,899 state one).