The brief
Mr Robin's Z4 was showing a high engine temperature, the gauge climbing higher than it should. He brought it in for a check. A high temperature reading doesn't always mean a coolant system fault, sometimes the engine is fine and the sensor that reports its temperature is reading wrong. The coolant temperature sensor tells the engine computer how hot the coolant is, and the computer feeds that to the temperature gauge and uses it for the fuelling. When the sensor ages and reads falsely high, the gauge shows a hot engine that isn't, and the management can adjust the fuelling against bad data. A faulty sensor doesn't recover, so it needs replacing, with the actual coolant temperature checked first to confirm the engine itself is fine.
The diagnosis
A check of the actual coolant temperature, with a separate tool, confirmed the engine was running at the right temperature, no real overheat, no coolant loss, the cooling system sound, the radiator, pump and thermostat all fine. A diagnostic scan pulled a fault for the coolant temperature sensor, reading high and not to be trusted. So it was the sensor, not the cooling system. That's a sensor replacement, you don't repair it, so the call was a new genuine BMW-spec sensor, fitted and the code cleared.
The work
The old coolant temperature sensor was removed, the seating cleaned up, and a new genuine BMW-spec sensor fitted with a fresh seal, the small amount of coolant lost topped back up. The fault code was cleared and the engine started and run to confirm the temperature reading was now correct and steady. A road test confirmed the gauge sat where it should, no false high reading, and the engine running cleanly.
The outcome
The temperature gauge reading the real engine temperature, no false high reading, and the engine running cleanly with the cooling system confirmed sound. The Z4 went home with the fault sorted. A faulty coolant temperature sensor makes the dash lie about a hot engine that isn't, so checking the real temperature, changing the sensor and clearing the code put the reading right without chasing a cooling problem that didn't exist.