Die Funktion ermittelt nicht, welche Höhe beim Start vorliegt, sondern entscheidet nur, ob von groß nach klein oder von klein nach groß animiert wird.
Fixen kannst Du das ggf. so:
Delphi-Quellcode:
while (D < Duration) do
begin
H := POS_START + POS_END - Round(POS_END * QuintEasing(D, Duration));
if (H < Height) then
Height := H;
Application.ProcessMessages;
D := GetTickCount - C;
end;
So entsteht allerdings am Anfang eine Verzögerung, da ja die getimeten Berechnungen trotzdem erfolgen.
Um das zu Verhindern müsstest Du die Berechnungsdauer (Duration) verkürzen oder besser in die Berechnung die Starthöhe einbeziehen.