diff --git a/resource_conflict.module b/resource_conflict.module
index 9398f75..9ada976 100644
--- a/resource_conflict.module
+++ b/resource_conflict.module
@@ -28,7 +28,14 @@ function resource_conflict_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
         
         // Get all conflicting Date nodes
         if (!empty($start) && !empty($end)) {
-          $overlapping_node_ids = _resource_conflict_overlaps_from_date($start, $end);
+          $time_spans_raw = array();
+          foreach ($node->{$date_field} as $single_repetition_date) {
+            $time_spans_raw[] = array(
+              'start' => $single_repetition_date['value'],
+              'end' => $single_repetition_date['value2'],
+            );
+          }
+          $overlapping_node_ids = _resource_conflict_overlaps_from_date($time_spans_raw);
         }
         else {
           // If we got here, someone broke the requirements, so turn off
@@ -318,24 +325,28 @@ function _resource_conflict_get_node_resource_demand($node) {
 /**
  * Determine if any nodes conflict between the specified dates using Date API.
  *
- * @param $date_start
- *   The start date of the date to check
- * @param $date_end
- *   The end date of the date to check.
+ * @param $time_spans_input
+ *   An array of 'time span' arrays.
+ *   Each 'time span' array has a 'start' and an 'end' key and ISO timestamps as values.
  * @return
  *   An array of node ID's
  */
-function _resource_conflict_overlaps_from_date($date_start, $date_end) {
-  // Make the default type to DATE_ISO.
-  $type = DATE_ISO;
-  // If date_start is not in DATE_ISO set the type to DATE_DATETIME.
-  if (!date_is_valid($date_start,DATE_ISO)) {
-    $type = DATE_DATETIME;
-  }
+function _resource_conflict_overlaps_from_date($time_spans_input) {
+  $time_spans = array();
+  foreach ($time_spans_input as $single_time_span_input) {
+    // Make the default type to DATE_ISO.
+    $type = DATE_ISO;
+    // If date_start is not in DATE_ISO set the type to DATE_DATETIME.
+    if (!date_is_valid($single_time_span_input['start'],DATE_ISO)) {
+      $type = DATE_DATETIME;
+    }
 
-  $start = date_make_date($date_start, 'GMT', $type);
-  $end = date_make_date($date_end, 'GMT', $type);
-  return _resource_conflict_get_overlaps($start, $end);
+    $time_spans[] = array(
+      'start' => date_make_date($single_time_span_input['start'], 'GMT', $type),
+      'end' => date_make_date($single_time_span_input['end'], 'GMT', $type),
+    );
+  }
+  return _resource_conflict_get_overlaps($time_spans);
 }
 
 /**
@@ -351,7 +362,7 @@ function _resource_conflict_overlaps_from_date($date_start, $date_end) {
 function _resource_conflict_overlaps_from_event($event_start, $event_end) {
   $start = date_make_date($event_start, 'GMT', DATE_UNIX);
   $end = date_make_date($event_end, 'GMT', DATE_UNIX);
-  return _resource_conflict_get_overlaps($start, $end);
+  return _resource_conflict_get_overlaps(array(array('start' => $start, 'end' => $end)));
 }
 
 /**
@@ -362,18 +373,13 @@ function _resource_conflict_overlaps_from_event($event_start, $event_end) {
  * 3. The event encompasses $start and $end
  * 4. Allow the end of one event to occur at the start of the next
  * 
- * @param $start
- *   The start time of events to search as dateAPI object
- * @param $end
- *   The end time of events to search as dateAPI object
+ * @param $time_spans
+ *   An array of 'time span' arrays.
+ *   Each 'time span' array has a 'start' and an 'end' key and dateAPI objects as values.
  * @return
  *   An array of node ID's
  */
-function _resource_conflict_get_overlaps($start, $end) {
-  $date_start = date_convert($start, DATE_OBJECT, DATE_ISO);
-  $date_end = date_convert($end, DATE_OBJECT, DATE_ISO);
-  $event_start = date_convert($start, DATE_OBJECT, DATE_UNIX);
-  $event_end = date_convert($end, DATE_OBJECT, DATE_UNIX);
+function _resource_conflict_get_overlaps($time_spans) {
 
   $rows = array();
   $conflict_types = _resource_conflict_get_conflict_enabled_types();
@@ -388,12 +394,29 @@ function _resource_conflict_get_overlaps($start, $end) {
       $start_field_name = $date_db_info['columns']['value']['column'];
       $end_field_name = $date_db_info['columns']['value2']['column'];
       
+      $where_or = array();
+      $query_args = array();
+      foreach ($time_spans as $time_span) {
+        $date_start = date_convert($time_span['start'], DATE_OBJECT, DATE_ISO);
+        $date_end = date_convert($time_span['end'], DATE_OBJECT, DATE_ISO);
+
+        $where_or[] = "('%s' >= date_table.$start_field_name AND '%s' < date_table.$end_field_name)";
+        $query_args[] = $date_start;
+        $query_args[] = $date_start;
+
+        $where_or[] = "('%s' > date_table.$start_field_name AND '%s' <= date_table.$end_field_name)";
+        $query_args[] = $date_end;
+        $query_args[] = $date_end;
+
+        $where_or[] = "('%s' <= date_table.$start_field_name AND '%s' >= date_table.$end_field_name)";
+        $query_args[] = $date_start;
+        $query_args[] = $date_end;
+      }
+
       $query = "SELECT DISTINCT {node}.nid FROM {node} INNER JOIN $date_table date_table ON {node}.vid = date_table.vid
-        WHERE('%s' >= date_table.$start_field_name AND '%s' < date_table.$end_field_name)
-        OR('%s' > date_table.$start_field_name AND '%s' <= date_table.$end_field_name)
-        OR('%s' <= date_table.$start_field_name AND '%s' >= date_table.$end_field_name)";
+        WHERE " . implode(' OR ', $where_or);
       
-      $result = db_query($query, $date_start, $date_start, $date_end, $date_end, $date_start, $date_end);
+      $result = db_query($query, $query_args);
 
       // Create an array of all of the results
       while ($row = db_fetch_array($result)) {
@@ -401,6 +424,8 @@ function _resource_conflict_get_overlaps($start, $end) {
       }
     }
     elseif ($date_field == 'event') { //event enabled
+      $event_start = date_convert($time_spans[0]['start'], DATE_OBJECT, DATE_UNIX);
+      $event_end = date_convert($time_spans[0]['end'], DATE_OBJECT, DATE_UNIX);
       $query = "SELECT DISTINCT nid FROM {event} WHERE (%d >= event_start AND %d < event_end)
         OR (%d > event_start AND %d <= event_end)
         OR (%d <= event_start AND %d >= event_end)";
