Hi I have this bit of code that turns things so they face the direction there about to move but sometimes it flips it upside down. So I need to fix that bug or check for upside down and flip back. here is my code vector AXIS_UP = <0,0,1>; vector AXIS_LEFT = <0,1,0>; vector AXIS_FWD = <1,0,0>; // getRotToPointAxisAt() // Gets the rotation to point the specified axis at the specified position. // @param axis The axis to point. Easiest to just use an AXIS_* constant. // @param target The target, in region-local coordinates, to point the axis at. // @return The rotation necessary to point axis at target. // Created by Ope Rand, modifyed by Christopher Omega rotation rotation getRotToPointAxisAt(vector axis, vector target) { return llGetRot() * llRotBetween(axis * llGetRot(), target - llGetPos()); } this is how I use it in my script llSetRot(getRotToPointAxisAt(AXIS_FWD , target_position)); Here is how I tried to fix it after the fact I thought the last float in a rotation determind if it was upside down and figured a negative number meant it was upside down so figured turning that to a posative might fix it but no. rotation myrot = llGetRot(); if (myrot.s < 0) { myrot.s = 1; myrot = <myrot.x,myrot.y,myrot.z,myrot.s>; llSetRot(myrot); }