--- user_reference/user_reference.module	2011-01-31 16:06:07.000000000 +0100
+++ user_reference/user_reference.module	2011-02-01 10:39:30.000000000 +0100
@@ -450,10 +450,14 @@
     $query->condition('u.status', $field['settings']['referenceable_status']);
   }
 
-  if (is_array($field['settings']['referenceable_roles']) && (!in_array(DRUPAL_AUTHENTICATED_RID, $field['settings']['referenceable_roles']))) {
-    $query->join('users_roles', 'r', 'u.uid = r.uid');
-    $query->addField('r', 'rid');
-    $query->condition('r.rid', $field['settings']['referenceable_roles']);
+  if (is_array($field['settings']['referenceable_roles'])) {
+      // Keep only selected checkboxes
+    $roles = array_filter($field['settings']['referenceable_roles']);
+    if (!empty($roles) && (!in_array(DRUPAL_AUTHENTICATED_RID, $roles))) {
+      $query->join('users_roles', 'r', 'u.uid = r.uid');
+      $query->addField('r', 'rid');
+      $query->condition('r.rid', $roles);
+    }
   }
 
   if ($string !== '') {
@@ -488,6 +492,7 @@
     $query->range(0, $limit);
   }
 
+  dpq($query);
   $result = $query->execute();
   $references = array();
   foreach ($result->fetchAll() as $user) {
