diff --git a/captcha.module b/captcha.module
index b2772b6..d7e952b 100644
--- a/captcha.module
+++ b/captcha.module
@@ -216,12 +216,20 @@ function captcha_element_process($element, &$form_state, $complete_form) {
     '#value' => $captcha_sid,
   );
 
-  // Additional one time CAPTCHA token: store in database and send with form.
-  $captcha_token = md5(mt_rand());
-  db_update('captcha_sessions')
-    ->fields(array('token' => $captcha_token))
+  $captcha_token = db_select('captcha_sessions', 'c')
+    ->fields('c', array('token'))
     ->condition('csid', $captcha_sid)
-    ->execute();
+    ->execute()
+    ->fetchField();
+  if (!isset($captcha_token) && !$form_state['submitted']) {
+    // Additional one-time CAPTCHA token: store in database and send with form.
+    $captcha_token = md5(mt_rand());
+    db_update('captcha_sessions')
+      ->fields(array('token' => $captcha_token))
+      ->condition('csid', $captcha_sid)
+      ->execute();
+  }
+
   $element['captcha_token'] = array(
     '#type' => 'hidden',
     '#value' => $captcha_token,
