diff --git a/captcha.module b/captcha.module
index 7d7c53c..4c0bce1 100644
--- a/captcha.module
+++ b/captcha.module
@@ -599,7 +599,10 @@ function captcha_validate($element, &$form_state) {
     // we also provide the CAPTCHA $element and $form_state arrays for more advanced use cases.
     if ($captcha_validate($solution, $captcha_response, $element, $form_state)) {
       // Correct answer.
-      $_SESSION['captcha_success_form_ids'][$form_id] = $form_id;
+      $captcha_persistence = variable_get('captcha_persistence', CAPTCHA_PERSISTENCE_SKIP_ONCE_SUCCESSFUL_PER_FORM_INSTANCE);
+      if ($captcha_persistence == CAPTCHA_PERSISTENCE_SKIP_ONCE_SUCCESSFUL || $captcha_persistence == CAPTCHA_PERSISTENCE_SKIP_ONCE_SUCCESSFUL_PER_FORM_TYPE) {
+        $_SESSION['captcha_success_form_ids'][$form_id] = $form_id;
+      }
       // Record success.
       db_update('captcha_sessions')
         ->condition('csid', $csid)
