The problem arises from accumulated floating point error in the position properties due to the slight inaccuracies.
In Vision, there's no great solutions for this.
One option would be to use a script, instead of a binding, to update the angle. Immediately after updating the angle, force the position properties to the nearest whole number; that should prevent accumulating error (and thus drift) over time.