Index: trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 7149)
+++ trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 7152)
@@ -11,7 +11,9 @@
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
@@ -325,25 +327,25 @@
     private void fixRelations(Node originalNode, List<Command> cmds, List<Node> newNodes) {
         // modify all relations containing the node
-        Relation newRel = null;
-        HashSet<String> rolesToReAdd = null;
         for (Relation r : OsmPrimitive.getFilteredList(originalNode.getReferrers(), Relation.class)) {
             if (r.isDeleted()) {
                 continue;
             }
-            newRel = null;
-            rolesToReAdd = null;
+            Relation newRel = null;
+            HashMap<String, Integer> rolesToReAdd = null; // <role name, index>
+            int i = 0;
             for (RelationMember rm : r.getMembers()) {
                 if (rm.isNode() && rm.getMember() == originalNode) {
                     if (newRel == null) {
                         newRel = new Relation(r);
-                        rolesToReAdd = new HashSet<>();
+                        rolesToReAdd = new HashMap<>();
                     }
-                    rolesToReAdd.add(rm.getRole());
-                }
+                    rolesToReAdd.put(rm.getRole(), i);
+                }
+                i++;
             }
             if (newRel != null) {
                 for (Node n : newNodes) {
-                    for (String role : rolesToReAdd) {
-                        newRel.addMember(new RelationMember(role, n));
+                    for (Map.Entry<String, Integer> role : rolesToReAdd.entrySet()) {
+                        newRel.addMember(role.getValue() + 1, new RelationMember(role.getKey(), n));
                     }
                 }
