Index: /trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 6912)
+++ /trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 6913)
@@ -324,5 +324,5 @@
      * @return a list of commands to execute
      */
-    private static List<Command> removeTagsFromWaysIfNeeded( Relation relation ) {
+    public static List<Command> removeTagsFromWaysIfNeeded( Relation relation ) {
         Map<String, String> values = new HashMap<String, String>(relation.getKeys());
 
Index: /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 6912)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 6913)
@@ -52,6 +52,7 @@
 public class JoinAreasAction extends JosmAction {
     // This will be used to commit commands and unite them into one large command sequence at the end
-    private LinkedList<Command> cmds = new LinkedList<Command>();
+    private final LinkedList<Command> cmds = new LinkedList<Command>();
     private int cmdsCount = 0;
+    private final LinkedList<Relation> addedRelations = new LinkedList<Relation>();
 
     /**
@@ -316,5 +317,6 @@
     public void actionPerformed(ActionEvent e) {
         LinkedList<Way> ways = new LinkedList<Way>(Main.main.getCurrentDataSet().getSelectedWays());
-
+        addedRelations.clear();
+        
         if (ways.isEmpty()) {
             new Notification(
@@ -373,5 +375,11 @@
 
             if (result.hasChanges) {
-
+                // move tags from ways to newly created relations
+                // TODO: do we need to also move tags for the modified relations?
+                for (Relation r: addedRelations) {
+                    cmds.addAll(CreateMultipolygonAction.removeTagsFromWaysIfNeeded(r));
+                }
+                commitCommands(tr("Move tags from ways to relations"));
+                
                 List<Way> allWays = new ArrayList<Way>();
                 for (Multipolygon pol : result.polygons) {
@@ -1307,4 +1315,5 @@
         }
         cmds.add(new AddCommand(newRel));
+        addedRelations.add(newRel);
 
         // We don't add outer to the relation because it will be handed to fixRelations()
