diff --git a/Lib/test/test_binop.py b/Lib/test/test_binop.py
index f60fe3f..0dc18dd 100644
--- a/Lib/test/test_binop.py
+++ b/Lib/test/test_binop.py
@@ -77,12 +77,6 @@
                                       repr(self))
         raise ValueError("can't convert %s to int" % repr(self))
 
-    def __long__(self):
-        """Convert a Rat to an long; self.den must be 1."""
-        if self.__den == 1:
-            return int(self.__num)
-        raise ValueError("can't convert %s to long" % repr(self))
-
     def __add__(self, other):
         """Add two Rats, or a Rat and a number."""
         if isint(other):
diff --git a/Lib/test/test_cmath.py b/Lib/test/test_cmath.py
index 3c34fec..17cb566 100755
--- a/Lib/test/test_cmath.py
+++ b/Lib/test/test_cmath.py
@@ -182,11 +182,9 @@
             pass
         class MyInt(object):
             def __int__(self): return 2
-            def __long__(self): return 2
             def __index__(self): return 2
         class MyIntOS:
             def __int__(self): return 2
-            def __long__(self): return 2
             def __index__(self): return 2
 
         # other possible combinations of __float__ and __complex__
@@ -219,7 +217,7 @@
             self.assertEqual(f(JustFloatOS()), f(flt_arg))
             # TypeError should be raised for classes not providing
             # either __complex__ or __float__, even if they provide
-            # __int__, __long__ or __index__.  An old-style class
+            # __int__ or __index__.  An old-style class
             # currently raises AttributeError instead of a TypeError;
             # this could be considered a bug.
             self.assertRaises(TypeError, f, NeitherComplexNorFloat())
diff --git a/Modules/_struct.c b/Modules/_struct.c
index a9b1ffa..a99e7f2 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -127,8 +127,8 @@
 		return v;
 	}
 	m = Py_TYPE(v)->tp_as_number;
-	if (m != NULL && m->nb_long != NULL) {
-		v = m->nb_long(v);
+	if (m != NULL && m->nb_int != NULL) {
+		v = m->nb_int(v);
 		if (v == NULL)
 			return NULL;
 		if (PyLong_Check(v))
diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index 75283a0..a7fd7dc 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -661,14 +661,6 @@
 }
 
 static PyObject *
-complex_long(PyObject *v)
-{
-	PyErr_SetString(PyExc_TypeError,
-		   "can't convert complex to long; use long(abs(z))");
-	return NULL;
-}
-
-static PyObject *
 complex_float(PyObject *v)
 {
 	PyErr_SetString(PyExc_TypeError,
@@ -1068,7 +1060,7 @@
 	0,					/* nb_xor */
 	0,					/* nb_or */
 	complex_int,				/* nb_int */
-	complex_long,				/* nb_long */
+	0,					/* nb_long */
 	complex_float,				/* nb_float */
 	0,					/* nb_inplace_add */
 	0,					/* nb_inplace_subtract */
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 20c1eef..7292ca5 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -1798,7 +1798,7 @@
 	0,		/*nb_xor*/
 	0,		/*nb_or*/
 	float_trunc,	/*nb_int*/
-	float_trunc,	/*nb_long*/
+	0,		/*nb_long*/
 	float_float,	/*nb_float*/
 	0,		/* nb_inplace_add */
 	0,		/* nb_inplace_subtract */
diff --git a/Objects/longobject.c b/Objects/longobject.c
index 9993d10..259f7c5 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -3830,7 +3830,7 @@
 			long_xor,	/*nb_xor*/
 			long_or,	/*nb_or*/
 			long_long,	/*nb_int*/
-			long_long,	/*nb_long*/
+	0,				/*nb_long*/
 			long_float,	/*nb_float*/
 	0,				/* nb_inplace_add */
 	0,				/* nb_inplace_subtract */
diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c
index faa0f86..538b21c 100644
--- a/Objects/weakrefobject.c
+++ b/Objects/weakrefobject.c
@@ -489,7 +489,6 @@
 WRAP_BINARY(proxy_xor, PyNumber_Xor)
 WRAP_BINARY(proxy_or, PyNumber_Or)
 WRAP_UNARY(proxy_int, PyNumber_Int)
-WRAP_UNARY(proxy_long, PyNumber_Long)
 WRAP_UNARY(proxy_float, PyNumber_Float)
 WRAP_BINARY(proxy_iadd, PyNumber_InPlaceAdd)
 WRAP_BINARY(proxy_isub, PyNumber_InPlaceSubtract)
@@ -595,7 +594,7 @@
     proxy_xor,              /*nb_xor*/
     proxy_or,               /*nb_or*/
     proxy_int,              /*nb_int*/
-    proxy_long,             /*nb_long*/
+    0,                      /*nb_long*/
     proxy_float,            /*nb_float*/
     proxy_iadd,             /*nb_inplace_add*/
     proxy_isub,             /*nb_inplace_subtract*/
diff --git a/PC/winreg.c b/PC/winreg.c
index 7d1d816..7316fcd 100644
--- a/PC/winreg.c
+++ b/PC/winreg.c
@@ -451,7 +451,7 @@
 	PyHKEY_binaryFailureFunc,	/* nb_xor */
 	PyHKEY_binaryFailureFunc,	/* nb_or */
 	PyHKEY_intFunc,			/* nb_int */
-	PyHKEY_unaryFailureFunc,	/* nb_long */
+	0,				/* nb_long */
 	PyHKEY_unaryFailureFunc,	/* nb_float */
 };
 
