Index: src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 4261)
+++ src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(working copy)
@@ -1494,9 +1494,7 @@
     public static Command createCommand(Collection<OsmPrimitive> sel, List<Tag> changedTags) {
         List<Command> cmds = new ArrayList<Command>();
         for (Tag tag: changedTags) {
-            if (!tag.getValue().isEmpty()) {
-                cmds.add(new ChangePropertyCommand(sel, tag.getKey(), tag.getValue()));
-            }
+            cmds.add(new ChangePropertyCommand(sel, tag.getKey(), tag.getValue()));
         }
 
         if (cmds.size() == 0)
Index: src/org/openstreetmap/josm/command/ChangePropertyCommand.java
===================================================================
--- src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 4261)
+++ src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(working copy)
@@ -5,6 +5,7 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
@@ -44,8 +45,8 @@
         super();
         this.objects = new LinkedList<OsmPrimitive>();
         this.key = key;
-        this.value = value;
-        if (value == null) {
+        this.value = (value == null || value.isEmpty()) ? null : value;
+        if (this.value == null) {
             for (OsmPrimitive osm : objects) {
                 if(osm.get(key) != null) {
                     this.objects.add(osm);
@@ -54,7 +55,7 @@
         } else {
             for (OsmPrimitive osm : objects) {
                 String val = osm.get(key);
-                if (val == null || !value.equals(val)) {
+                if (val == null || !this.value.equals(val)) {
                     this.objects.add(osm);
                 }
             }
@@ -62,14 +63,7 @@
     }
 
     public ChangePropertyCommand(OsmPrimitive object, String key, String value) {
-        this.objects = new LinkedList<OsmPrimitive>();
-        this.key = key;
-        this.value = value;
-        String val = object.get(key);
-        if ((value == null && val != null)
-                || (value != null && (val == null || !value.equals(val)))) {
-            this.objects.add(object);
-        }
+        this(Arrays.asList(object), key, value);
     }
 
     @Override public boolean executeCommand() {
