For instance, I am currently 9Gig through a 24Gig download (Dragon Age: Origins) and this has taken 254 minutes. I would therefore seem to be taking 24 minutes per Gigabyte (590kB/s), and it will thus take me a total of 677 minutes. So, 7 hours and 3 minutes to go.
However, because my current download speed is about 1MB/s, it's telling me that my remaining time is about 250 minutes (4 hours and ten minutes). Now, while it's _possible_ that I'm going to get lots more stable bandwidth than I did in the first half, it seems unlikely. And the fact that it has a lot of data about how much I get to download over a long period and _isn't_ using that to calculate my remaining time drives me nuts.
I would have thought that a reasonable formula would be to balance off the current speed against the average speed so far - with current speed being more important the closer we get to the end, and average speed being more useful when we're further away from the end (and thus having to deal with more variance during the time remaining).
A nice simple formula for that would be:
Speed estimate = (Average speed*percentage done)+(Current speed*percentage remaining)
Which gives me 296 minutes - about five hours.
This would iron out the bumps in the estimation process (sharp swings in download speed wouldn't yank the estimates up and down quite so much), and hopefully give a more accurate figure. Of course, recalculating based on the average download speed in the last 1% of the download, rather than the last 5 seconds (which seems to be what Steam is doing) would be a lot more useful too.
Sadly, no matter which one of the figures is right here I'm going to be asleep when the download finishes, so I'm never going to know. Still, at least playing with numbers has kept me distracted for a bit...