--- multichoice.module	2006-09-18 15:43:26.000000000 -0500
+++ multichoice.module	2006-09-18 16:44:31.000000000 -0500
@@ -342,7 +342,7 @@ function multichoice_render_question($no
   $form['tries'] = array(
     '#type' => $type,
     '#options' => $options,
-    '#default_value' => NULL,
+    '#default_value' => -1,
   );
   $form['submit'] = array(
     '#type' => 'submit',
@@ -353,7 +353,21 @@ function multichoice_render_question($no
 }
 
 /**
- * Evaluate whether question is correct
+ * Checks to make sure the user selected an answer
+ */
+function multichoice_render_question_validate($form_id, $form_values){
+  if ($form_values['tries'] == -1) {
+    form_set_error('tries', t('Please choose one of the answers below to continue.'));
+  }
+}
+
+
+/**
+ * Translates the user's answers into an answer array 
+ * in preperation to save it to the database
+ * 
+ * Adds the new quiz answer in to the existing answers array
+ * and passes it back to the calling funciton (quiz_take_quiz)
  *
  * @param $nid
  *   Question Node ID
@@ -364,6 +378,8 @@ function multichoice_render_question($no
  *     'answers' => array of correct answer(s)
  *     'tried' => array of selected answer(s)
  *   );
+ *   If nothing was selected, the return will be an empty array.
+ * 
  */
 function multichoice_evaluate_question($nid) {
   $question = node_load($nid);
--- quiz.module	2006-09-18 15:43:27.000000000 -0500
+++ quiz.module	2006-09-18 16:44:32.000000000 -0500
@@ -375,9 +375,12 @@ function quiz_take_quiz() {
 
       // Check for answer submission
       if ($_POST['op'] == t('Submit')) {
-        $former_question = node_load(array('nid' => array_shift($_SESSION['quiz_questions'])));
-        $result = module_invoke($former_question->type, 'evaluate_question', $former_question->nid);
-        db_query("REPLACE {quiz_question_results} VALUES(%d, %d, '%s')", $_SESSION['rid'], $former_question->nid, serialize($result));
+        $former_question = node_load(array('nid' => $_SESSION['quiz_questions'][0]));
+        // evaluate the answer and only move to the next question if the result is not empty
+        if($result = module_invoke($former_question->type, 'evaluate_question', $former_question->nid)){
+          array_shift($_SESSION['quiz_questions']);
+          db_query("REPLACE {quiz_question_results} VALUES(%d, %d, '%s')", $_SESSION['rid'], $former_question->nid, serialize($result));
+        }
       }
 
       // Check to see if we need to load the next question
