I see. Actually I just ended up using timeScale(0) because I started off by building on top of your own fine example . I assumed timeScale(0) must be the same as pausing. Although the effect of starting/stopping gradually is nice, it's not one I particularly need, so I'll just re-implement using pause/play/resume. But given this difference, shouldn't your example actually pause once the animation to timeScale(0) has finished? Something like this:
http://codepen.io/thunderkid/pen/epmxay
It still needs one 1e-8 hack, but seems more robust than before.
In general, though, couldn't you just perform a check that whenever timeScale(x) is called internally, if (x<1e-9) pause the timeline, and set a flag saying that it's been paused just for rounding reasons. Seems timeScale(x) would be called only infrequently, so I don't see how it would entail a performance hit. (I haven't actually delved into the code, so this is just random speculation.)