Maybe Windows itself.
There progressbar has a nasty habbit of not directly showing Position, but it "grows" to it.
Test with themes disabled (shows "old-time" progressbar), if it behaves correctly then, you identified the problem.
You bypass this behaviour by decreasing Position, Windows will draw the progressbar's position immediately.
ProgressBar.Position := WantedPosition + 1;
ProgressBar.Repaint; //IIRC this is needed, or Application.ProcessMessage
ProgressBar.Position := WantedPosition;
Bart