Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/OSMValidatorPlugin.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/OSMValidatorPlugin.java	(revision 12256)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/OSMValidatorPlugin.java	(revision 12257)
@@ -26,4 +26,7 @@
 import org.openstreetmap.josm.actions.UploadAction;
 import org.openstreetmap.josm.actions.UploadAction.UploadHook;
+import org.openstreetmap.josm.data.projection.Epsg4326;
+import org.openstreetmap.josm.data.projection.Lambert;
+import org.openstreetmap.josm.data.projection.Mercator;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -40,5 +43,4 @@
 import org.openstreetmap.josm.plugins.validator.tests.SelfIntersectingWay;
 import org.openstreetmap.josm.plugins.validator.tests.SimilarNamedWays;
-import org.openstreetmap.josm.plugins.validator.tests.TagChecker;
 import org.openstreetmap.josm.plugins.validator.tests.UnclosedWays;
 import org.openstreetmap.josm.plugins.validator.tests.UnconnectedWays;
@@ -68,4 +70,7 @@
     /** The list of errors per layer*/
     Map<Layer, List<TestError>> layerErrors = new HashMap<Layer, List<TestError>>();
+    
+    /** Grid detail, multiplier of east,north values for valuable cell sizing */
+    public static double griddetail;
 
     public Collection<String> ignoredErrors = new TreeSet<String>();
@@ -96,4 +101,5 @@
     public OSMValidatorPlugin() {
         plugin = this;
+        initializeGridDetail();
         initializeTests(getTests());
         loadIgnoredErrors();
@@ -226,4 +232,18 @@
 
     /**
+     * Initialize grid details based on current projection system. Values based on
+     * the original value fixed for EPSG:4326 (10000) using heuristics (that is, test&error 
+     * until most bugs were discovered while keeping the processing time reasonable)
+     */
+    public void initializeGridDetail() {
+        if (Main.proj.toString().equals(new Epsg4326().toString()))
+            OSMValidatorPlugin.griddetail = 10000;
+        else if (Main.proj.toString().equals(new Mercator().toString()))
+            OSMValidatorPlugin.griddetail = 100000;
+        else if (Main.proj.toString().equals(new Lambert().toString()))
+            OSMValidatorPlugin.griddetail = 0.1;
+    }
+    
+    /**
      * Initializes all tests
      * @param allTests The tests to initialize
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/CrossingWays.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/CrossingWays.java	(revision 12256)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/CrossingWays.java	(revision 12257)
@@ -15,4 +15,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.plugins.validator.OSMValidatorPlugin;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -138,5 +139,5 @@
 	{
 		List<List<ExtendedSegment>> cells = new ArrayList<List<ExtendedSegment>>();
-		for( Point2D cell : Util.getSegmentCells(n1, n2, 10000) )
+		for( Point2D cell : Util.getSegmentCells(n1, n2, OSMValidatorPlugin.griddetail) )
 		{
 			List<ExtendedSegment> segments = cellSegments.get( cell );
Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/Util.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/Util.java	(revision 12256)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/util/Util.java	(revision 12257)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.plugins.PluginInformation;
+import org.openstreetmap.josm.plugins.validator.OSMValidatorPlugin;
 
 /**
@@ -87,8 +88,8 @@
 
 		// First, round coordinates
-		long x0 = Math.round(n1.eastNorth.east()  * 10000);
-		long y0 = Math.round(n1.eastNorth.north() * 10000);
-		long x1 = Math.round(n2.eastNorth.east()  * 10000);
-		long y1 = Math.round(n2.eastNorth.north() * 10000);
+		long x0 = Math.round(n1.eastNorth.east()  * OSMValidatorPlugin.griddetail);
+		long y0 = Math.round(n1.eastNorth.north() * OSMValidatorPlugin.griddetail);
+		long x1 = Math.round(n2.eastNorth.east()  * OSMValidatorPlugin.griddetail);
+		long y1 = Math.round(n2.eastNorth.north() * OSMValidatorPlugin.griddetail);
 
 		// Start of the way
@@ -118,8 +119,8 @@
 
 		// Then floor coordinates, in case the way is in the border of the cell.
-		x0 = (long)Math.floor(n1.eastNorth.east()  * 10000);
-		y0 = (long)Math.floor(n1.eastNorth.north() * 10000);
-		x1 = (long)Math.floor(n2.eastNorth.east()  * 10000);
-		y1 = (long)Math.floor(n2.eastNorth.north() * 10000);
+		x0 = (long)Math.floor(n1.eastNorth.east()  * OSMValidatorPlugin.griddetail);
+		y0 = (long)Math.floor(n1.eastNorth.north() * OSMValidatorPlugin.griddetail);
+		x1 = (long)Math.floor(n2.eastNorth.east()  * OSMValidatorPlugin.griddetail);
+		y1 = (long)Math.floor(n2.eastNorth.north() * OSMValidatorPlugin.griddetail);
 
 		// Start of the way
@@ -164,5 +165,5 @@
 	 * @return A list with the coordinates of all cells
 	 */
-	public static List<Point2D> getSegmentCells(Node n1, Node n2, int gridDetail)
+	public static List<Point2D> getSegmentCells(Node n1, Node n2, double gridDetail)
 	{
 		List<Point2D> cells = new ArrayList<Point2D>();
