I'm pushing an MG996R servo and find that when positioning to a given degree of rotation, the shaft stops at in a different place point depending upon whether it travels in CW or CCW direction. It's consistent and predictable - just that points arrived at CW and CCW aren't the same.
Let's say I want to reposition the shaft to destination 88deg. If the shaft starts from lower than the destination like at 78deg and I tell it to go to 88deg via servo.write(88) it will travel CW to a position I will call "A". But if the shaft position is higher than the destination like 104deg and I tell it to go to 88deg again via servo.write(88) it will go CW to a different position I will call "B". For me, "A" and "B" are very different positions yet both claim to be 88deg! I arrive at both via servo.write(88), and both report back "88" from servo.read(). Yet the positions are off by about 10deg!
Is this common knowledge? Or so folks just not expect such accuracy. I'd expect the server to know how to find like 88deg pretty accurately when twisting in either direction to get there. But seems not the case.