Index: Objects/longobject.c =================================================================== --- Objects/longobject.c (revision 65155) +++ Objects/longobject.c (working copy) @@ -178,7 +178,9 @@ return NULL; } if (Py_IS_NAN(dval)) { - return PyLong_FromLong(0L); + PyErr_SetString(PyExc_ValueError, + "cannot convert float NaN to long"); + return NULL; } if (dval < 0.0) { neg = 1; Index: Lib/test/test_long.py =================================================================== --- Lib/test/test_long.py (revision 65155) +++ Lib/test/test_long.py (working copy) @@ -745,7 +745,8 @@ def test_nan_inf(self): self.assertRaises(OverflowError, long, float('inf')) - self.assertEqual(long(float('nan')), 0L) + self.assertRaises(OverflowError, long, float('-inf')) + self.assertRaises(ValueError, long, float('nan')) def test_main(): test_support.run_unittest(LongTest)