diff --git a/py/objgenerator.c b/py/objgenerator.c
index 3bf29732e24ccd972a0b0eeab707307090d1e006..0f0f84249b7bbdf4dbf44ede0472ffe6ba72217d 100644
--- a/py/objgenerator.c
+++ b/py/objgenerator.c
@@ -134,6 +134,9 @@ mp_vm_return_kind_t mp_obj_gen_resume(mp_obj_t self_in, mp_obj_t send_value, mp_
 
         case MP_VM_RETURN_YIELD:
             *ret_val = *self->code_state.sp;
+            if (*ret_val == MP_OBJ_STOP_ITERATION) {
+                self->code_state.ip = 0;
+            }
             break;
 
         case MP_VM_RETURN_EXCEPTION: