diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py
index 5d975f6..a9e010e 100644
--- a/Lib/test/test_deque.py
+++ b/Lib/test/test_deque.py
@@ -51,7 +51,9 @@
     def test_maxlen(self):
         self.assertRaises(ValueError, deque, 'abc', -1)
         self.assertRaises(ValueError, deque, 'abc', -2)
-        d = deque(range(10), maxlen=3)
+        it = iter(range(10))
+        d = deque(it, maxlen=3)
+        self.assertEqual(list(it), [])
         self.assertEqual(repr(d), 'deque([7, 8, 9], maxlen=3)')
         self.assertEqual(list(d), [7, 8, 9])
         self.assertEqual(d, deque(range(10), 3))
@@ -88,6 +90,21 @@
             fo.close()
             support.unlink(support.TESTFN)
 
+    def test_maxlen_zero(self):
+        it = iter(range(100))
+        deque(it, maxlen=0)
+        self.assertEqual(list(it), [])
+
+        it = iter(range(100))
+        d = deque(maxlen=0)
+        d.extend(it)
+        self.assertEqual(list(it), [])
+
+        it = iter(range(100))
+        d = deque(maxlen=0)
+        d.extendleft(it)
+        self.assertEqual(list(it), [])
+
     def test_comparisons(self):
         d = deque('xabc'); d.popleft()
         for e in [d, deque('abc'), deque('ab'), deque(), list(d)]:
diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c
index 20f30f4..8d27b88 100644
--- a/Modules/_collectionsmodule.c
+++ b/Modules/_collectionsmodule.c
@@ -276,6 +276,23 @@
 
 PyDoc_STRVAR(appendleft_doc, "Add an element to the left side of the deque.");
 
+
+/* Run an iterator to exhaustion.  Shortcut for 
+   the extend/extendleft methods when maxlen == 0. */
+static PyObject*
+consume_iterator(PyObject *it)
+{
+	PyObject *item;
+
+	while ((item = PyIter_Next(it)) != NULL) {
+		Py_DECREF(item);
+	}
+	Py_DECREF(it);
+	if (PyErr_Occurred())
+		return NULL;
+	Py_RETURN_NONE;
+}
+
 static PyObject *
 deque_extend(dequeobject *deque, PyObject *iterable)
 {
@@ -285,6 +302,9 @@
 	if (it == NULL)
 		return NULL;
 
+	if (deque->maxlen == 0)
+		return consume_iterator(it);
+
 	while ((item = PyIter_Next(it)) != NULL) {
 		deque->state++;
 		if (deque->rightindex == BLOCKLEN-1) {
@@ -323,6 +343,9 @@
 	if (it == NULL)
 		return NULL;
 
+	if (deque->maxlen == 0)
+		return consume_iterator(it);
+
 	while ((item = PyIter_Next(it)) != NULL) {
 		deque->state++;
 		if (deque->leftindex == 0) {
