В этом случае, при достижении нуля все будет так же. Это не выход. Там нужен код посложнее.
Я вот так расчитывал вращение башни танка за курсором:

Код AS3:
// расчет плавного вращения башни в сторону курсора >>>>
var mouseXpos:Number = this.parent.mouseX;
var mouseYpos:Number = this.parent.mouseY;
var angleToMouse:Number = Math.atan2(mouseYpos - this.y, mouseXpos - this.x) * Globals.RAD_TO_DEG + 90;
if (angleToMouse >= 180 && angleToMouse <= 270) {
angleToMouse -= 360;
}
if (angleToMouse < 0 && angleToMouse > -180) {
angleToMouse += 360;
}
var vehRotation:Number = this.rotation;
if (vehRotation < 0 && vehRotation > -180) {
vehRotation += 360;
}
var turretRot:Number = this.mTurret.rotation;
if (turretRot < 0 && turretRot > -180) {
turretRot += 360;
}
var turretGlobal:Number = turretRot + vehRotation;
if (turretGlobal >= 360) {
turretGlobal -= 360;
}
else if (turretGlobal < 0) {
turretGlobal += 360;
}
if (turretGlobal >= 270 && turretGlobal <= 360) {
if (angleToMouse >= 0 && angleToMouse <= 90) {
turretGlobal -= 360;
}
}
if (turretGlobal >= 0 && turretGlobal <= 90) {
if (angleToMouse <= 360 && angleToMouse >= 270) {
turretGlobal += 360;
}
}
// admission - это минимальный угол, при котором башня перестает двигаться, нужен для того, чтобы она не начинала дергаться при достижении нужной позиции
var admission:Number = (turretGlobal - angleToMouse) > 0 ? (turretGlobal - angleToMouse) : (turretGlobal - angleToMouse) * -1;
if (turretGlobal <= angleToMouse) {
if (admission > 3)
this.mTurret.rotation += _turretAccel;
} else if (turretGlobal > angleToMouse) {
if (admission > 3)
this.mTurret.rotation -= _turretAccel;
}
Конечно код малость мудреный, но свое дело он делал.
Там может и не быть 270, просто в моем случае башня была повернута (картинка) как бы на 90 градусов, но в коде это воспринималось как 0.
п.с. Пояснения спрашивать бесполезно, я сам уже не помню что там и зачем
