I used the enhancement framework to fix this, and then a whole bunch of end users complained as they had got used to the weird standard behaviour and considered it normal.
So I comprised and set it back to the default stupid behaviour, unless you had a PID set up, which when set to "X" made it act logically.