diff --git a/README.txt b/README.txt
index 2812993..6b5a650 100644
--- a/README.txt
+++ b/README.txt
@@ -57,7 +57,8 @@ The module also invokes a "user_relationships" hook passing in the following arg
     delete    | remove                  | when a relationship is removed
     delete    | cancel                  | when a relationship request is cancelled
     delete    | disapprove              | when a relationship request is disapprove
-    
+
+    cron      | NULL                    | when the cron hook is run. an array of expired request objects will be passed through
 
   $relationship either the relationship_type or relationship object
 
diff --git a/user_relationships_hooks.inc b/user_relationships_hooks.inc
index 4996ccc..e89a055 100644
--- a/user_relationships_hooks.inc
+++ b/user_relationships_hooks.inc
@@ -331,24 +331,30 @@ function user_relationships_cron() {
 
   // only expire relationships once a day
   $last_cron = variable_get('user_relationships_last_expire', 0);
-  if ($now >  $last_cron + (24 * 60 * 60)) {
+  if ($now < $last_cron + 86400) {
     return FALSE;
   }
 
-  switch ($GLOBALS['db_type']) {
-  case 'mysql':
-  case 'mysqli':
-    db_query(
-      " DELETE ur
-        FROM user_relationships ur, user_relationship_types urt
-        WHERE ur.approved = 0
-          AND ur.rtid = urt.rtid
-          AND urt.expires_val > 0
-          AND UNIX_TIMESTAMP() > ur.updated_at + (86400 * urt.expires_val)"
-    );
-    break;
+  $result = db_query(
+    " SELECT *
+      FROM {user_relationships} ur
+        INNER JOIN {user_relationship_types} urt USING ( rtid )
+      WHERE ur.approved = 0
+        AND urt.expires_val > 0
+        AND ur.updated_at + (86400 * urt.expires_val) < {$now}
+      GROUP BY ur.rid"
+  );
+
+  $expired_requests = array();
+  while($request = db_fetch_object($result)) {
+    $expired_requests[$request->rid] = $request;
   }
 
+  $ids = array_keys($expired_requests);
+  db_query("DELETE FROM {user_relationships} WHERE rid IN (%s)", implode(',', $ids));
+
+  _user_relationships_invoke('cron', $expired_requests);
+
   // remember when we last expired relationships
   variable_set('user_relationships_last_expire', $now);
   return TRUE;
