I have run several experiments on the llSetRot() command, and it is just screwy. For example, just to test it, i wrote a for loop that went through 8 times, and was supposed to rotat the object by 90 degrees, or 1/4 radians each time, but it doesn't...It rotates the object a larger number initially and then the change drops dramatically as the function progresses( i will post that tomorrow)
Anyways, if you see something I am missing, drop me a line, cause, well I am completely stumper
vector base_pos;
rotation base_rotation;
default
{
state_entry()
{
base_pos=llGetPos();
base_rotation=llGetRot();
llListen(0,"","","start"

llListen(0,"","","stop"

llListen(0,"","","die"

}
listen(integer a, string n, key id, string m)
{
vector linear=base_pos;
rotation circular=base_rotation;
if(m=="start"

{
integer i;
// for (i=0;i<20;i++)
// {
// linear.x+=(.5/20);
// llSetPos(linear);
// }
vector o_point;
o_point=linear+<0,0,-.3>;
for (i=0;i<21;i++)
{
float x;
float z;
z=.3-i*(1.1)/20;
x=llSqrt((.3*.3)-(z*z));
circular=<0,1,0,-i*(PI)/20>;
llWhisper(0,(string)circular);
linear.x=o_point.x+x;
linear.z=o_point.z+z;
llSetPos(linear);
llSetRot(circular);
llSleep(.1);
}
}
if(m=="stop"

{
llSetPos(base_pos);
llSetRot(base_rotation);
}
if(m=="die"

{
llDie();
}
}
}