* Add unittests for iterators that report their length
* Document the differences between them
* Fix corner cases covered by the unittests
* Use Py_RETURN_NONE where possible for dictionaries
diff --git a/Modules/collectionsmodule.c b/Modules/collectionsmodule.c
index cf474f7..fc30c99 100644
--- a/Modules/collectionsmodule.c
+++ b/Modules/collectionsmodule.c
@@ -770,6 +770,7 @@
 
 	if (it->len != it->deque->len) {
 		it->len = -1; /* Make this state sticky */
+		it->counter = 0;
 		PyErr_SetString(PyExc_RuntimeError,
 				"deque changed size during iteration");
 		return NULL;
@@ -860,6 +861,7 @@
 
 	if (it->len != it->deque->len) {
 		it->len = -1; /* Make this state sticky */
+		it->counter = 0;
 		PyErr_SetString(PyExc_RuntimeError,
 				"deque changed size during iteration");
 		return NULL;