Actually, the Math.round is working. The key detail is when it changes to non-bold before it says "Done!" Without Math.round, the browser thinks them as illegal values, and thus only changes the weight on the final set of 100.
It's a shame that even with given a Light font, the browsers don't seem to use it. (See http://jsfiddle.net/xPv5w/) But, we can at least fix the "two-scale" problem here.
I would go ahead and put in the Math.round(now/100)*100 fix you have here, since technically, those are the only legal values of font-weight. That would at least solve for the edge case here where you will need the font-weight to switch to non-bold in the middle of the animation. And perhaps someday browsers will actually use those nine values.