I've been working with EZRotate for over a year, so I've learned some of the little tricks.
Give this a try..
ang# as float
sync rate 60: sync on
make object cube 1, 3
position object 1, 50, 0, 0
make object sphere 2, 3
position object 2, 0, 0, 0
position camera 0, 0, 0, 0
move camera 0, -100
do
EZro_SetEuler OBJECT ANGLE X(1),OBJECT ANGLE Y(1),OBJECT ANGLE Z(1)
EZro_SetPos OBJECT POSITION X(1),OBJECT POSITION Y(1), OBJECT POSITION Z(1)
ang# = abs(360 - EZro_FindLocalYAngleToPoint(0, 0, 0))
if ang# > 359.0 then ang# = 0.0
EZro_RotateTo 2,OBJECT POSITION X(2),OBJECT POSITION Y(2), OBJECT POSITION Z(2),0.5
EZro_FindEuler
ROTATE OBJECT 1,EZro_GetEulerX(),EZro_GetEulerY(),EZro_GetEulerZ()
if ang# < 2
MOVE OBJECT 1, 0.25
endif
control camera using arrowkeys 0, 0.1, 0.1
text 10, 10, "Y angle from target "+str$(ang#)
sync
Loop
This waits until the Y angle is small enough, then it starts moving, which makes the results of your testing a little easier to interpret. It may still be turning on other axies, but it will be a lot closer to facing the target before it moves.