Der Servo springt immer zuerst in eine gewisse Endposition weil Du das so programmiert hast.
for(int l=0;l!=winkel;l++)
Du mußt als Startpunkt den ist-Wert "pos" nehmen und nicht "0".
Außerdem mußt Du die Drehrichtung kontrollieren weil wenn "winkel" kleiner als "pos" ist die Schritte negativ sein müssen (die Variable "l" vermindern )
Grüße Uwe