diff --git a/lib/questionlib.php b/lib/questionlib.php
index 9592a5220b9..bdb7b98fbf7 100644
--- a/lib/questionlib.php
+++ b/lib/questionlib.php
@@ -1064,8 +1064,10 @@ function question_process_responses(&$question, &$state, $action, $cmoptions, &$
 
     // Check for unchanged responses (exactly unchanged, not equivalent).
     // We also have to catch questions that the student has not yet attempted
-    $sameresponses = !$state->last_graded->event == QUESTION_EVENTOPEN &&
-            $QTYPES[$question->qtype]->compare_responses($question, $action, $state);
+    $sameresponses = $QTYPES[$question->qtype]->compare_responses($question, $action, $state);
+    if ($state->last_graded->event == QUESTION_EVENTOPEN && question_isgradingevent($action->event)) {
+        $sameresponses = false;
+    }
 
     // If the response has not been changed then we do not have to process it again
     // unless the attempt is closing or validation is requested