attention: c-script ahead
Code:
define turn_speed, 8;

define _turning, skill99;
entity* turn_ent;

function turn_object(_ent,_add)
{
  var cur_pan;
  var turn_dist;

  turn_ent = _ent;
  if(!turn_ent._turning)
  {
    turn_ent._turning = 1;
    cur_pan = ang(turn_ent.pan);
    while(ang(turn_ent.pan) < ang(cur_pan+_add))
    {
      turn_dist = ang(cur_pan+_add - turn_ent.pan);
      clamp(turn_dist,0,turn_speed);
      turn_ent.pan += turn_dist * time_step;
      wait(1);
    }
    turn_ent.pan = ang(cur_pan + _add);
    turn_ent._turning = 0;
  }
}


warning: untested code above
example: how to call the function
turn_object(player,90);

mapping to keys:
Code:
function turn_left()
{
  turn_object(player,90);
}

function turn_right()
{
  turn_object(player,-90);
}

on_cul = turn_left;
on_cur = turn_right;