Index: src/uk/me/parabola/mkgmap/osmstyle/actions/ConvertFilter.java
===================================================================
--- src/uk/me/parabola/mkgmap/osmstyle/actions/ConvertFilter.java	(revision 3782)
+++ src/uk/me/parabola/mkgmap/osmstyle/actions/ConvertFilter.java	(working copy)
@@ -19,6 +19,8 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import uk.me.parabola.log.Logger;
+import uk.me.parabola.mkgmap.filters.ShapeMergeFilter;
 import uk.me.parabola.mkgmap.osmstyle.eval.UnitConversions;
 import uk.me.parabola.mkgmap.reader.osm.Element;
 
@@ -28,8 +30,10 @@
  * @author Steve Ratcliffe
  */
 public class ConvertFilter extends ValueFilter {
-	private static final Pattern UNIT_RE = Pattern.compile("\\s*([\\d.]+)\\s*([\\w/]*)\\s*");
+	private static final Logger log = Logger.getLogger(ConvertFilter.class);
 
+	private static final Pattern UNIT_RE = Pattern.compile("\\s*([\\d\\.\\,]+)\\s*([\\w/]*)\\s*");
+
 	private final UnitConversions units;
 
 	public ConvertFilter(String arg) {
@@ -60,12 +64,23 @@
 			}
 		}
 
-		try {
-			double d = Double.parseDouble(number);
-			return String.valueOf(Math.round(d * factor));
-		} catch (NumberFormatException e) {
-			// Turns out it wasn't a pure number, just return the value unchanged.
-			return value;
+		double d;
+		boolean converted = false;
+		while (true) {
+			try {
+				d = Double.parseDouble(number);
+				break; // value is okay
+			} catch (NumberFormatException e) {
+				if (converted)
+					return value;
+				// try if number contains wrong decimal separator
+				number = number.replace(',', '.');
+				converted = true;
+			}
 		}
+		if (converted)
+			log.warn("invalid decimal separator found in value '" + value + "'", el.toBrowseURL());
+
+		return String.valueOf(Math.round(d * factor));
 	}
 }
