I don't know why you're so keen on using floats. This does not make any sense from my point of view. You don't gain any more precision as you have to cast to the fixed types anyways. Why don't you just:

Code:
void rotateperhour(ENTITY* ent)
{
   fixed ticks;
   while(1)
   {
      ticks = (ticks+time_frame) % 57600; // or time_step when you want to use time_factor
      ent.pan = ticks / 16 / 60 / 60;
      wait(1);
   }
}


Alternatively you can use a skill of the entities instead of the local variable.


Always learn from history, to be sure you make the same mistakes again...