Take an Arudino with both analog and digital pins. A digital pin is either high (1) or low (0). That's it. On or Off. An analog pin can have a range of values from 0v to 3.3v or 5v depending on configuration. That single pin can be wired to several different items that each have a separate resistance allowing them to be identified by their passed voltage.
At the same time, analog has its own problems with that lack of precision, so everything needs to accept a range. Put a resistance on a 5v line, and read from it multiple times and you get multiple readings, but within a +/- tolerance.
Not to say a digital thermostat couldn't account for this (you have to find them specifically), and are probably better with good firmware, but murcury will have a wider margin before activation.
Well, digital thermostats will have as much of margin as you program them to.
Until your comment, I assumed every digital thermostat had hysteresis since the 90's. I can't imagine why they wouldn't. The more expensive ones have PWM control of the heater or heat exchanger, but that's something extra beyond what the mechanical ones did (metal strip thermostats used to be designed with hysteresis too, what isn't something they automatically have).
The simplest possible implementation of an electronic thermostat would be able to switch thousands of times per second, and this is completely useless for controlling anything mechanical. When you are making real controllers, you always need some extra complexity, but you don't need a lot of it to make a good one.
(The Tekmar smart home interface for it is offensively priced. The thermostat works fine without it, though.)
Is it a problem that it stays closer to the asked temperature?
I think a digital thermostat could work well enough if they weren't made with a focus on being stupidly cheap or possibly somehow still absolutely energy efficient.
* Wake up and respond FAST to user inputs.
* Show the numbers it's thinking of big (running average over 5, 10, 15 min?), but also the current reading small (but readable) updated whenever it polls.
* If there's a hold or timeout involved display that too, expose the user to the thought process, don't just be a nearly opaque box.
* Be responsive in other ways. If I switch modes at the very least kill the old mode's 'calling' line right then, even if the new one gets a cooldown to prevent equipment issues.
One reason I could see is to preserve the life of electromagnetic relays, but modern thermostats should use solid state relays.
These points also seem to be solved for any somewhat modern (less than 15 years old?) run of the mill thermostat. Generally they always show the current reading and give the temperature setting only when you ask for it though, that's the only difference I see with what you want.
A running average, but also making it clear to the user (both the value the unit is using for the decision and the current instant input) as well as a 'running average' over a given window address that specific comment. I added my own frustrations on top since they're also part of the larger 'dumb down the UI' and make the device frustrating.