Wie man es mit smooth macht, weiß ich nicht.
Ich könnte dir nur eine klassische Alternative anbieten.

Dieser Code berechnet einen Richtungsvektor von my zu einem Zielvektor (hier target genannt). my wird nach links oder rechts rotiert, abhängig davon, ob die Differenz zwischen dem pan des Richtungsvektors und dem pan von my positiv oder negativ ist. Die "maximale" Roationsgeschwindigkeit (ohne time_step-Korrektur) beträgt 5 und wird am Ende der Rotation gegen 0 "gesmoothed". (Code ungetestet, sollte aber grundsätzlich funktionieren)
VECTOR to_target_ang;
vec_to_angle(to_target_ang, vec_diff(NULL, target, my->x));
var angle_diff = ang(to_target_ang.pan - my->pan);
if (angle_diff > 0)
my->pan += minv(angle_diff, 5) * time_step;
else
my->pan += maxv(angle_diff, -5) * time_step;