diff --git a/Modules/datetimemodule.c b/Modules/datetimemodule.c
index 3fe1185..48445a1 100644
--- a/Modules/datetimemodule.c
+++ b/Modules/datetimemodule.c
@@ -803,13 +803,15 @@
  * the "naivety" typedef for details.  If the type is aware, *offset is set
  * to minutes east of UTC (as returned by the tzinfo.utcoffset() method).
  * If the type is offset-naive (or unknown, or error), *offset is set to 0.
+ * tzinfoarg is the argument to pass to the tzinfo.utcoffset() method.
  */
 static naivety
-classify_utcoffset(PyObject *op, int *offset)
+classify_utcoffset(PyObject *op, PyObject *tzinfoarg, int *offset)
 {
 	int none;
 	PyObject *tzinfo;
 
+	assert(tzinfoarg != NULL);
 	*offset = 0;
 	tzinfo = get_tzinfo_member(op);	/* NULL means no tzinfo, not error */
 	if (tzinfo == Py_None)
@@ -819,9 +821,7 @@
 		return (PyTime_Check(op) || PyDate_Check(op)) ?
 		       OFFSET_NAIVE : OFFSET_UNKNOWN;
 	}
-	*offset = call_utcoffset(tzinfo,
-				 PyTimeTZ_Check(op) ? Py_None : op,
-				 &none);
+	*offset = call_utcoffset(tzinfo, tzinfoarg, &none);
 	if (*offset == -1 && PyErr_Occurred())
 		return OFFSET_ERROR;
 	return none ? OFFSET_NAIVE : OFFSET_AWARE;
@@ -838,17 +838,19 @@
  */
 static int
 classify_two_utcoffsets(PyObject *o1, int *offset1, naivety *n1,
-			PyObject *o2, int *offset2, naivety *n2)
+			PyObject *tzinfoarg1,
+			PyObject *o2, int *offset2, naivety *n2,
+			PyObject *tzinfoarg2)
 {
 	if (get_tzinfo_member(o1) == get_tzinfo_member(o2)) {
 		*offset1 = *offset2 = 0;
 		*n1 = *n2 = OFFSET_NAIVE;
 	}
 	else {
-		*n1 = classify_utcoffset(o1, offset1);
+		*n1 = classify_utcoffset(o1, tzinfoarg1, offset1);
 		if (*n1 == OFFSET_ERROR)
 			return -1;
-		*n2 = classify_utcoffset(o2, offset2);
+		*n2 = classify_utcoffset(o2, tzinfoarg2, offset2);
 		if (*n2 == OFFSET_ERROR)
 			return -1;
 	}
@@ -3177,7 +3179,9 @@
 	}
 
 	if (classify_two_utcoffsets((PyObject *)self, &offset1, &n1,
-				     other, &offset2, &n2) < 0)
+				    (PyObject *)self,
+				     other, &offset2, &n2,
+				     other) < 0)
 		return NULL;
 	assert(n1 != OFFSET_UNKNOWN && n2 != OFFSET_UNKNOWN);
  	/* If they're both naive, or both aware and have the same offsets,
@@ -3231,7 +3235,8 @@
 		int offset;
 		PyObject *temp;
 
-		n = classify_utcoffset((PyObject *)self, &offset);
+		n = classify_utcoffset((PyObject *)self, (PyObject *)self,
+				       &offset);
 		assert(n != OFFSET_UNKNOWN);
 		if (n == OFFSET_ERROR)
 			return -1;
@@ -3690,8 +3695,8 @@
 			     other->ob_type->tp_name);
 		return NULL;
 	}
-	if (classify_two_utcoffsets((PyObject *)self, &offset1, &n1,
-				     other, &offset2, &n2) < 0)
+	if (classify_two_utcoffsets((PyObject *)self, &offset1, &n1, Py_None,
+				     other, &offset2, &n2, Py_None) < 0)
 		return NULL;
 	assert(n1 != OFFSET_UNKNOWN && n2 != OFFSET_UNKNOWN);
 	/* If they're both naive, or both aware and have the same offsets,
@@ -3739,7 +3744,7 @@
 		int offset;
 		PyObject *temp;
 
-		n = classify_utcoffset((PyObject *)self, &offset);
+		n = classify_utcoffset((PyObject *)self, Py_None, &offset);
 		assert(n != OFFSET_UNKNOWN);
 		if (n == OFFSET_ERROR)
 			return -1;
@@ -4628,8 +4633,9 @@
 			int offset1, offset2;
 			PyDateTime_Delta *delta;
 
-			if (classify_two_utcoffsets(left, &offset1, &n1,
-						    right, &offset2, &n2) < 0)
+			if (classify_two_utcoffsets(left, &offset1, &n1, left,
+						    right, &offset2, &n2,
+						    right) < 0)
 				return NULL;
 			assert(n1 != OFFSET_UNKNOWN && n2 != OFFSET_UNKNOWN);
 			if (n1 != n2) {
