Index: trunk/data/defaultpresets.xml
===================================================================
--- trunk/data/defaultpresets.xml	(revision 15262)
+++ trunk/data/defaultpresets.xml	(revision 15263)
@@ -3872,8 +3872,8 @@
                 <text key="operator" text="Operator" />
                 <combo key="toilets:position" text="Usage Position" values="seated,seated;urinal,squat,urinal" />
-                <combo key="diaper" text="Diaper" values="yes,no,room,1,2,3,4,5" text_context="toilets" />
                 <reference ref="wheelchair" />
                 <check key="drinking_water" text="Drinking Water" />
             </optional>
+            <preset_link preset_name="Changing table" />
         </item> <!-- Toilets/Restrooms -->
         <item name="Shower" icon="presets/service/shower.svg" type="node,closedway" preset_name_label="true">
@@ -3889,9 +3889,21 @@
                 </checkgroup>
                 <text key="description" text="Description" />
-                <combo key="fee" text="Fee" values="yes,no" />
+                <reference ref="fee" />
                 <text key="operator" text="Operator" />
                 <reference ref="oh_wheelchair" />
             </optional>
         </item> <!-- Shower -->
+        <item name="Changing table" icon="presets/service/changing_table.svg" type="node,closedway" preset_name_label="true">
+            <link wiki="Key:changing_table" />
+            <space />
+            <combo key="changing_table" text="Changing table" values="yes,limited,no" default="yes" match="keyvalue!" />
+            <optional>
+                <check key="changing_table:fee" text="Fee" />
+                <combo key="changing_table:count" text="Count" values="1,2,3,4,5" />
+                <multiselect key="changing_table:location" text="Location" text_context="Changing table" values="dedicated_room;female_toilet;male_toilet;room;sales_area;unisex_toilet;wheelchair_toilet" />
+                <text key="operator" text="Operator" />
+                <reference ref="wheelchair" />
+            </optional>
+        </item> <!-- Changing table -->
         <separator/>
         <item name="Post Box" icon="presets/service/post_box.svg" type="node" preset_name_label="true">
Index: trunk/data/validator/deprecated.mapcss
===================================================================
--- trunk/data/validator/deprecated.mapcss	(revision 15262)
+++ trunk/data/validator/deprecated.mapcss	(revision 15263)
@@ -1634,2 +1634,83 @@
   fixAdd: "guest_house=bed_and_breakfast";
 }
+
+/* #17880 */
+*[diaper=yes],
+*[diaper=no] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: concat("changing_table=", "{0.value}");
+  group: tr("deprecated tagging");
+  fixChangeKey: "diaper => changing_table";
+  set diaper_checked;
+}
+*[diaper][diaper =~ /^[1-9][0-9]*$/] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: concat("changing_table=yes + changing_table:count=", "{0.value}");
+  group: tr("deprecated tagging");
+  fixChangeKey: "diaper => changing_table:count";
+  fixAdd: "changing_table=yes";
+  set diaper_checked;
+}
+*[diaper=room] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: "changing_table=room";
+  suggestAlternative: "changing_table=dedicated_room";
+  group: tr("deprecated tagging");
+  set diaper_checked;
+}
+*[diaper]!.diaper_checked {
+  throwWarning: tr("{0} is deprecated", "{0.key}");
+  suggestAlternative: "changing_table";
+  group: tr("deprecated tagging");
+}
+*[diaper:male=yes] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: "changing_table:location=male_toilet";
+  group: tr("deprecated tagging");
+  fixAdd: "changing_table:location=male_toilet";
+  fixRemove: "diaper:male";
+  set diaper___checked;
+}
+*[diaper:female=yes] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: "changing_table:location=female_toilet";
+  group: tr("deprecated tagging");
+  fixAdd: "changing_table:location=female_toilet";
+  fixRemove: "diaper:female";
+  set diaper___checked;
+}
+*[diaper:unisex=yes] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: "changing_table:location=unisex_toilet";
+  group: tr("deprecated tagging");
+  fixAdd: "changing_table:location=unisex_toilet";
+  fixRemove: "diaper:unisex";
+  set diaper___checked;
+}
+*[diaper:wheelchair=yes],
+*[diaper:wheelchair=no] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: concat("changing_table:wheelchair=", "{0.value}");
+  group: tr("deprecated tagging");
+  fixChangeKey: "diaper:wheelchair => changing_table:wheelchair";
+  set diaper___checked;
+}
+*[diaper:fee=yes],
+*[diaper:fee=no] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: concat("changing_table:fee=", "{0.value}");
+  group: tr("deprecated tagging");
+  fixChangeKey: "diaper:fee => changing_table:fee";
+  set diaper___checked;
+}
+*[/^diaper:/]!.diaper___checked {
+  throwWarning: tr("{0} is deprecated", "diaper:*");
+  suggestAlternative: "changing_table:*";
+  group: tr("deprecated tagging");
+}
+*[changing_table][changing_table!~/^(yes|no|limited)$/] {
+  throwWarning: tr("wrong value: {0}", "{0.tag}");
+  suggestAlternative: "changing_table=yes";
+  suggestAlternative: "changing_table=no";
+  suggestAlternative: "changing_table=limited";
+}
