diff --git a/office_hours.elements.inc b/office_hours.elements.inc
index 4b8e2a3..a5995c1 100644
--- a/office_hours.elements.inc
+++ b/office_hours.elements.inc
@@ -73,7 +73,7 @@ function _office_hours_select_process($element, &$form_state, $form) {
   }
 
   $hours = ($element['#hoursformat'] == 1) ? date_hours('g') : date_hours('H');
-  if (!empty($element['#valhrs']) && !empty($element['#limitend']) ) {
+  if (!empty($element['#limitstart']) || !empty($element['#limitend']) ) {
     $hours = _office_hours_limit_hours($hours, $element['#limitstart'], $element['#limitend']);
   }
   $minutes = date_minutes('i', FALSE, $element['#granularity']);
@@ -145,28 +145,22 @@ function office_hours_select_is_empty($item, $field) {
 function _office_hours_field_validate($element, &$form_state) {
   $field_settings = _office_hours_get_field_settings($element, $form_state);
 
-  // Only if 'Validate hours' is set in field settings.
-  if (!$field_settings['valhrs']) {
-    return;
-  }
-
   $delta = $element['#delta'];
   $item = drupal_array_get_nested_value($form_state['values'], $element['#parents']);
 
   $error_text = '';
-  if (empty($item['starthours']) && empty($item['endhours']) ) {
-    //This is OK.
-  }
-  elseif (!empty($item['starthours']) xor !empty($item['endhours']) ) {
-    //  $error_text = 'Both Opening hours and Closing hours must be set.';
+  if (!empty($item['starthours']) xor !empty($item['endhours']) ) {
+    $error_text = 'Both Opening hours and Closing hours must be set.';
   }
-  elseif ($item['starthours'] > $item['endhours'] ) {
+  
+  elseif ( ($field_settings['valhrs']) && ($item['starthours'] > $item['endhours']) ) {
     $error_text = 'Closing hours are earlier than opening hours.';
   }
-  elseif (!empty($field_settings['limitstart']) && !empty($field_settings['limitend'])) {
+  
+  elseif (!empty($field_settings['limitstart']) || !empty($field_settings['limitend'])) {
     $starthours = (int) substr($item['starthours'],0,2);
     $endhours = (int )substr($item['endhours'],0,2);
-    if ($field_settings['limitstart'] > $starthours ||  $field_settings['limitend'] < $endhours) {
+    if ( ($starthours && $field_settings['limitstart'] > $starthours) || ($endhours && $field_settings['limitend'] < $endhours) ) {
       $error_text = 'Opening hours are outside limits' . ' (' . $field_settings['limitstart'] . ' - ' . $field_settings['limitend'] .').';
     }
   }
