Index: includes/date_api_filter_handler.inc
===================================================================
--- includes/date_api_filter_handler.inc	(revision 47)
+++ includes/date_api_filter_handler.inc	(working copy)
@@ -47,7 +47,7 @@
     // a submitted value. Send a flag to the date widget processors so they 
     // know to set '#value' instead of '#default_value' in that case.
     $this->force_value = FALSE;
-    if (empty($this->options['exposed']) || (isset($this->options['expose']['identifier']) && !isset($_GET[$this->options['expose']['identifier']]))) {
+    if (empty($this->options['exposed']) || (empty($this->options['expose']['optional']) && isset($this->options['expose']['identifier']) && !isset($_GET[$this->options['expose']['identifier']]))) {
       $this->force_value = TRUE;
     }
   }
Index: date_api_elements.inc
===================================================================
--- date_api_elements.inc	(revision 47)
+++ date_api_elements.inc	(working copy)
@@ -151,7 +151,7 @@
   
   // Keep the system from creating an error message for the sub-element.
   // We'll set our own message on the parent element.
-  //$element['date']['#required'] = $element['#required'];
+  $element['date']['#required'] = $element['#required'];
   $element['date']['#theme'] = 'date_textfield_element';
   if (isset($element['#element_validate'])) {
     array_push($element['#element_validate'], 'date_text_validate');
