diff --git a/role_export.module b/role_export.module
index cfd3bb3..bc0d8fa 100644
--- a/role_export.module
+++ b/role_export.module
@@ -112,17 +112,18 @@ function role_export_roles() {
       // Select all roles that are not 'anonymous' or 'authenticated'
       $query = db_query("SELECT rid, name, machine_name FROM {role} WHERE rid != 1 AND rid != 2");
       while($value = db_fetch_object($query)) {
-        // Check for a machine_name value
-        if ($value->machine_name == '') {
-          // Generate machine_name and unique rid.
-          $mname = 'role-' . role_export_machine_name_gen($value->name);
-          $rid = role_export_generate_id($mname);
-          // Update the current role with the new data.
-          db_query("UPDATE {role} SET rid = %d, machine_name = '%s' WHERE rid = %d", $rid, $mname, $value->rid);
-          // Assign the new values to the object.
-          $value->rid = $rid;
-          $value->machine_name = $mname;
+        // Ensure the rid is the machine_name's hash
+        if ($value->rid == role_export_generate_id($value->machine_name)) {
+          continue;
         }
+        if (empty($value->machine_name)) {
+          $value->machine_name = role_export_machine_name_gen($value->name);
+        }
+        $new_rid = role_export_generate_id($value->machine_name);
+        // Update the current role with the new data.
+        db_query("UPDATE {role} SET rid = %d, machine_name = '%s' WHERE rid = %d", $new_rid, $value->machine_name, $value->rid);
+        // Update our cached object's rid.
+        $value->rid = $new_rid;
         $roles[$value->rid] = $value;
       }
       cache_set('role_export_roles', $roles);
