All of the functions of Math first apply ToNumber on their arguments (left to right) before actually doing what they do.
The NaN, -0, +0, -∞ and +∞ refer to Number values as described in 8.5.
The specification notes that it does not impose strict rules on how edge cases for approximation are computed. As a general guideline it states that an implementor should be able to use the same library in Ecmascript as it could for C, on the same platform.
So between implementations, rounding can possibly stray from one another.