diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 06631dc..3b3a34e 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -896,6 +896,19 @@
     d.foo = 1
     verify(d.foo == 1)
 
+    # Test handling of int*seq and seq*int
+    class I(int):
+        __dynamic__ = 1
+    verify("a"*I(2) == "aa")
+    verify(I(2)*"a" == "aa")
+
+    # Test handling of long*seq and seq*long
+    class L(long):
+        __dynamic__ = 1
+    verify("a"*L(2L) == "aa")
+    verify(L(2L)*"a" == "aa")
+    
+
 def errors():
     if verbose: print "Testing errors..."
 
diff --git a/Objects/intobject.c b/Objects/intobject.c
index c93b384..16e4336 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -344,14 +344,16 @@
 	long a, b, ah, bh, x, y;
 	int s = 1;
 
-	if (v->ob_type->tp_as_sequence &&
-			v->ob_type->tp_as_sequence->sq_repeat) {
+	if (!PyInt_Check(v) &&
+	    v->ob_type->tp_as_sequence &&
+	    v->ob_type->tp_as_sequence->sq_repeat) {
 		/* sequence * int */
 		a = PyInt_AsLong(w);
 		return (*v->ob_type->tp_as_sequence->sq_repeat)(v, a);
 	}
-	else if (w->ob_type->tp_as_sequence &&
-			w->ob_type->tp_as_sequence->sq_repeat) {
+	if (!PyInt_Check(w) &&
+	    w->ob_type->tp_as_sequence &&
+	    w->ob_type->tp_as_sequence->sq_repeat) {
 		/* int * sequence */
 		a = PyInt_AsLong(v);
 		return (*w->ob_type->tp_as_sequence->sq_repeat)(w, a);
diff --git a/Objects/longobject.c b/Objects/longobject.c
index 7c4f75d..1e01bf0 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -183,6 +183,8 @@
 	int i, sign;
 
 	if (vv == NULL || !PyLong_Check(vv)) {
+		if (vv != NULL && PyInt_Check(vv))
+			return PyInt_AsLong(vv);
 		PyErr_BadInternalCall();
 		return -1;
 	}
@@ -1448,17 +1450,19 @@
 	int size_a;
 	int size_b;
 	int i;
-	
-	if (v->ob_type->tp_as_sequence &&
-			v->ob_type->tp_as_sequence->sq_repeat) {
-		return long_repeat((PyObject *)v, w);
-	}
-	else if (w->ob_type->tp_as_sequence &&
-			w->ob_type->tp_as_sequence->sq_repeat) {
-		return long_repeat((PyObject *)w, v);
-	}
 
-	CONVERT_BINOP((PyObject *)v, (PyObject *)w, &a, &b);
+	if (!convert_binop((PyObject *)v, (PyObject *)w, &a, &b)) {
+		if (!PyLong_Check(v) &&
+		    v->ob_type->tp_as_sequence &&
+		    v->ob_type->tp_as_sequence->sq_repeat)
+			return long_repeat((PyObject *)v, w);
+		if (!PyLong_Check(w) &&
+			 w->ob_type->tp_as_sequence &&
+			 w->ob_type->tp_as_sequence->sq_repeat)
+			return long_repeat((PyObject *)w, v);
+		Py_INCREF(Py_NotImplemented);
+		return Py_NotImplemented;
+	}
 
 	size_a = ABS(a->ob_size);
 	size_b = ABS(b->ob_size);
