Os cuento, es simplemente un compresor que utiliza el TZipMaster y muestra el progreso parcial y total de la compresion.
Lo he solucionado de la siguiente forma (chapuza, pero funciona y de momento no puedo perder mas tiempo con esto). El progressbar actuaba mal con el Style=pbsNormal, si se ponia a psbError o psbPaused funcionaba bien, si ponia referesh o repaint tambien iba mal asi que al final poniendo el codigo de esta forma funciona:
Código Delphi
[-]PB.Position := nPos;
PB.StepBy(-1);
PB.StepBy(1);
Debe de ser que asignando directamente a Position el paint tiene que tener algun bug, y forzando con StepBy parece que se fuerza correctamente el pintado.
Lo propuesto por nlsgarcia funcionaba perfectamente, y seguramente es una opcion mas elegante que la que he adoptado pero considero que es mas simple a la hora de interpretar el codigo en un futuro. aun asi la guardo en mi biblioteca porque nunca se sabe.
Bueno gente, muchas gracias a todos y espero no haberos mareado mucho