I use this function to first get difference between the current angle and wanted angle:
(If you use radians just change all 180 to PI and 360 to 2*PI)
[pascal]function Angle3(src,dest: double): double;
begin
result:=src-dest;
while result<-180 do result:=result+360;
while result>180 do result:=result-360;
end;[/pascal]
This is because if your current angle is towards 45 degrees and you want to turn to 350 the shortest way is to negative side. This function always returns -180 to 180 that is directly the amount that you have to add to your current angle to end up to destination.

So if you want to turn slowly, just multiply result from this function by 0.1 or something and add it to current angle. There are different ways to use result from this...
...or if result is negative you want to turn left, and if its positive then turn right.