Index: trunk/src/org/openstreetmap/josm/data/projection/Epsg4326.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/Epsg4326.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/Epsg4326.java	(revision 2114)
@@ -38,6 +38,11 @@
     {
         return new Bounds(
-        new LatLon(-90.0, -180.0),
-        new LatLon(90.0, 180.0));
+                new LatLon(-90.0, -180.0),
+                new LatLon(90.0, 180.0));
+    }
+
+    public double getDefaultZoomInPPD() {
+        // This will set the scale bar to about 100 km
+        return 0.009;
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/projection/GaussLaborde_Reunion.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/GaussLaborde_Reunion.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/GaussLaborde_Reunion.java	(revision 2114)
@@ -216,3 +216,7 @@
     }
 
+    public double getDefaultZoomInPPD() {
+        // this will set the map scaler to about 1000 m
+        return 10.02;
+    }
 }
Index: trunk/src/org/openstreetmap/josm/data/projection/Lambert.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/Lambert.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/Lambert.java	(revision 2114)
@@ -289,3 +289,8 @@
                 new LatLon(57.0, 10.2));*/
     }
+
+    public double getDefaultZoomInPPD() {
+        // TODO FIXME
+        return 0;
+    }
 }
Index: trunk/src/org/openstreetmap/josm/data/projection/LambertEST.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/LambertEST.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/LambertEST.java	(revision 2114)
@@ -48,5 +48,5 @@
         double t = Math.tan(Math.PI / 4.0 - Math.toRadians(p.lat()) / 2.0)
         / Math.pow(( (1.0 - ee * Math.sin(Math.toRadians(p.lat()))) / (1.0
-        + ee * Math.sin(Math.toRadians(p.lat())))) ,(ee / 2.0));
+                + ee * Math.sin(Math.toRadians(p.lat())))) ,(ee / 2.0));
         double r = a * f * Math.pow(t, n);
         double theta = n * (Math.toRadians(p.lon()) - lonf);
@@ -64,18 +64,17 @@
         double a = 1.5707963267948966;
         double b = 1.5707963267948966 - (2.0 * Math.atan(t * Math.pow((1.0
-        - (e * Math.sin(a))) / (1.0 + (e * Math.sin(a))), e / 2.0)));
+                - (e * Math.sin(a))) / (1.0 + (e * Math.sin(a))), e / 2.0)));
         while (Math.abs(a-b) > epsilon)
         {
             a = a1 + ((a2 - a1) / 2.0);
             b = 1.5707963267948966 - (2.0 * Math.atan(t * Math.pow((1.0
-            - (e * Math.sin(a))) / (1.0 + (e * Math.sin(a))), e / 2.0)));
+                    - (e * Math.sin(a))) / (1.0 + (e * Math.sin(a))), e / 2.0)));
             if (a1 == a2)
-            {
                 return 0.0;
+            if (b > a) {
+                a1 = a;
+            } else {
+                a2 = a;
             }
-            if (b > a)
-                a1 = a;
-            else
-                a2 = a;
         }
         return b;
@@ -85,5 +84,5 @@
     {
         double r = Math.sqrt(Math.pow((p.getX() - ef), 2.0) + Math.pow((rf
-        - p.getY() + nf), 2.0) ) * Math.signum(n);
+                - p.getY() + nf), 2.0) ) * Math.signum(n);
         double T = Math.pow((r / (a * f)), (1.0/ n)) ;
         double theta = Math.atan((p.getX() - ef) / (rf - p.getY() + nf));
@@ -109,6 +108,11 @@
     {
         return new Bounds(
-        new LatLon(-90.0, -180.0),
-        new LatLon(90.0, 180.0));
+                new LatLon(-90.0, -180.0),
+                new LatLon(90.0, 180.0));
+    }
+
+    public double getDefaultZoomInPPD() {
+        // TODO FIXME
+        return 0;
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/projection/Mercator.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/Mercator.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/Mercator.java	(revision 2114)
@@ -24,12 +24,12 @@
     public EastNorth latlon2eastNorth(LatLon p) {
         return new EastNorth(
-            p.lon()*Math.PI/180,
-            Math.log(Math.tan(Math.PI/4+p.lat()*Math.PI/360)));
+                p.lon()*Math.PI/180,
+                Math.log(Math.tan(Math.PI/4+p.lat()*Math.PI/360)));
     }
 
     public LatLon eastNorth2latlon(EastNorth p) {
         return new LatLon(
-            Math.atan(Math.sinh(p.north()))*180/Math.PI,
-            p.east()*180/Math.PI);
+                Math.atan(Math.sinh(p.north()))*180/Math.PI,
+                p.east()*180/Math.PI);
     }
 
@@ -49,6 +49,11 @@
     {
         return new Bounds(
-        new LatLon(-85.05112877980659, -180.0),
-        new LatLon(85.05112877980659, 180.0));
+                new LatLon(-85.05112877980659, -180.0),
+                new LatLon(85.05112877980659, 180.0));
+    }
+
+    public double getDefaultZoomInPPD() {
+        // This will set the scale bar to about 100 km
+        return 0.000158;
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/projection/Projection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/Projection.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/Projection.java	(revision 2114)
@@ -24,6 +24,6 @@
         new Epsg4326(),
         new Mercator(),
-        new LambertEST(),
-        new Lambert(),
+        new LambertEST(), // Still needs proper default zoom
+        new Lambert(),    // Still needs proper default zoom
         new SwissGrid(),
         new UTM(),
@@ -33,4 +33,9 @@
         new GaussLaborde_Reunion()
     };
+
+    /**
+     * Returns the default zoom scale in pixel per degree ({@see #NavigatableComponent#scale}))
+     */
+    double getDefaultZoomInPPD();
 
     /**
Index: trunk/src/org/openstreetmap/josm/data/projection/SwissGrid.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/SwissGrid.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/SwissGrid.java	(revision 2114)
@@ -102,6 +102,11 @@
     {
         return new Bounds(
-        new LatLon(45.7, 5.7),
-        new LatLon(47.9, 10.6));
+                new LatLon(45.7, 5.7),
+                new LatLon(47.9, 10.6));
+    }
+
+    public double getDefaultZoomInPPD() {
+        // This will set the scale bar to about 100 m
+        return 1.01;
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/projection/UTM.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/UTM.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/UTM.java	(revision 2114)
@@ -342,5 +342,5 @@
     public int getzone()
     {
-      return 33;
+        return 33;
     }
 
@@ -356,6 +356,11 @@
     {
         return new Bounds(
-        new LatLon(-85.0, UTMCentralMeridianDeg(getzone())-5.0),
-        new LatLon(85.0, UTMCentralMeridianDeg(getzone())+5.0));
+                new LatLon(-85.0, UTMCentralMeridianDeg(getzone())-5.0),
+                new LatLon(85.0, UTMCentralMeridianDeg(getzone())+5.0));
+    }
+
+    public double getDefaultZoomInPPD() {
+        // this will set the map scaler to about 1000 m
+        return 10;
     }
 }
Index: trunk/src/org/openstreetmap/josm/data/projection/UTM_20N_Guadeloupe_Fort_Marigot.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/UTM_20N_Guadeloupe_Fort_Marigot.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/UTM_20N_Guadeloupe_Fort_Marigot.java	(revision 2114)
@@ -36,3 +36,7 @@
     }
 
+    public double getDefaultZoomInPPD() {
+        // this will set the map scaler to about 1000 m
+        return 10;
+    }
 }
Index: trunk/src/org/openstreetmap/josm/data/projection/UTM_20N_Guadeloupe_Ste_Anne.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/UTM_20N_Guadeloupe_Ste_Anne.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/UTM_20N_Guadeloupe_Ste_Anne.java	(revision 2114)
@@ -36,3 +36,7 @@
     }
 
+    public double getDefaultZoomInPPD() {
+        // this will set the map scaler to about 1000 m
+        return 10.01;
+    }
 }
Index: trunk/src/org/openstreetmap/josm/data/projection/UTM_20N_Martinique_Fort_Desaix.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/UTM_20N_Martinique_Fort_Desaix.java	(revision 2098)
+++ trunk/src/org/openstreetmap/josm/data/projection/UTM_20N_Martinique_Fort_Desaix.java	(revision 2114)
@@ -35,3 +35,8 @@
         return tr("UTM20N Martinique Fort Desaix 1952");
     }
+
+    public double getDefaultZoomInPPD() {
+        // this will set the map scaler to about 1000 m
+        return 10.01;
+    }
 }
