diff --git a/lodash.js b/lodash.js index 013a1f793..799df4b94 100644 --- a/lodash.js +++ b/lodash.js @@ -9736,9 +9736,12 @@ * // => -1e308 */ function toInteger(value) { - return (value == INFINITY || value == -INFINITY) - ? (value < 0 ? -1 : 1) * MAX_INTEGER - : (value - (value % 1)) || 0; + if (value === INFINITY || value === -INFINITY) { + return (value < 0 ? -1 : 1) * MAX_INTEGER; + } + value = +value; + var remainder = value % 1; + return value === value ? (remainder ? value - remainder : value) : 0; } /** diff --git a/test/test.js b/test/test.js index 75c07a4e3..0c0ded3d9 100644 --- a/test/test.js +++ b/test/test.js @@ -19063,6 +19063,12 @@ assert.strictEqual(_.toInteger(Infinity), MAX_INTEGER); assert.strictEqual(_.toInteger(-Infinity), -MAX_INTEGER); }); + + QUnit.test('should not coerce `-0` to `0`', function(assert) { + assert.expect(1); + + assert.strictEqual(1 / _.toInteger(-0), -Infinity); + }); }()); /*--------------------------------------------------------------------------*/