The solution i used was just have it delayed by a bit, that way it should do the last few percent instantly which is fine by the user, and if not the progress bar keeps moving and its just 'catching up'.  That being said it was on a website so it was also partially because CSS transitions just work that way