diff --git a/modules/resource_conflict/resource_conflict.module b/modules/resource_conflict/resource_conflict.module
index f4d805e..77328df 100644
--- a/modules/resource_conflict/resource_conflict.module
+++ b/modules/resource_conflict/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_iso = array();
+          foreach ($node->{$date_field} as $single_repetition_date) {
+            $time_spans_iso[] = array(
+              'start' => $single_repetition_date['value'],
+              'end' => $single_repetition_date['value2'],
+            );
+          }
+          $overlapping_node_ids = _resource_conflict_overlaps_from_date($time_spans_iso);
         }
         else {
           // If we got here, someone broke the requirements, so turn off
@@ -318,17 +325,21 @@ 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_iso
+ *   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) {
-  $start = date_make_date($date_start, 'GMT', DATE_ISO);
-  $end = date_make_date($date_end, 'GMT', DATE_ISO);
-  return _resource_conflict_get_overlaps($start, $end);
+function _resource_conflict_overlaps_from_date($time_spans_iso) {
+  $time_spans = array();
+  foreach ($time_spans_iso as $time_span_iso) {
+    $time_spans[] = array(
+      'start' => date_make_date($time_span_iso['start'], 'GMT', DATE_ISO),
+      'end' => date_make_date($time_span_iso['end'], 'GMT', DATE_ISO),
+    );
+  }
+  return _resource_conflict_get_overlaps($time_spans);
 }
 
 /**
@@ -344,7 +355,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)));
 }
 
 /**
@@ -355,18 +366,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 DateTime 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();
@@ -381,12 +387,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'];
       
-      $query = "SELECT DISTINCT nid FROM $date_table
-        WHERE('%s' >= $start_field_name AND '%s' < $end_field_name)
-        OR('%s' > $start_field_name AND '%s' <= $end_field_name)
-        OR('%s' <= $start_field_name AND '%s' >= $end_field_name)";
+      $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 nid FROM $date_table date_table
+        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)) {
@@ -394,6 +417,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)";
