Zigbee2MQTT exposes don't make sense on TRV's?

Any help appreciated as I cant quite see the logic on this.
I don’t really have a problem it’s more I don’t understand what I’m looking at …

I have a bunch of Moes BRT-100-TRV’s. There are 2 parameters exposed that I can’t get to grips with, namely;
valve_state(binary) - which returns OPEN or CLOSED
position(numeric) - which returns the position of the valve as a percentage (but limited to 0%,25%,50%,75%,100%)

Here comes the paradox…
Invariably I will see this type of thing from a TRV. “valve_state”=CLOSED and “position”=75%
This seems contradictory as if the valve is closed surely its position would be 0%
If I go feel the radiator with these reading it is cold confirming “valve_state” is in fact correct.
So what the heck is “position” actually showing me at this time ?

Thanks in advance.

@nick4275 I’m by no means certain but I think that the position indication is only updated by the valve when in programmed schedule mode.
Here’s a graph from my living room TRV. The yellow line shows when the status was OPEN and the orange one the position. Purple is the temperature. So, it opens to 75%, heats the rad and then drops to 50%, then 25% to slow down the temp increase. Then it closes when desired temp reached but just doesn’t think it’s worth updating the position value to 0%, even though it obviously is.

So, I suggest you ignore the position value unless in programmed schedule mode and even then take it with a pinch of salt.

Thanks for such a detailed answer. I agree, it’s just not bothering to update the position when the value is closed as it’s sort of irrelevant. I’m happy it’s not me missing something.
I don’t use the programming mode. I control it directly from Node-Red, so I will ignore it as you suggest.
Thanks for taking the time to respond