I was having the same issue, mine starts to put negative value after 50%, so i decided to test on the value of PercenLoaded(), id it's negative i add 100 :
loadingValue = e.ref.PercentLoaded();
if(loadingValue < 0){
loadingValue = e.ref.PercentLoaded() + 100;
}