Index: /trunk/data_nodist/projection/josm-epsg
===================================================================
--- /trunk/data_nodist/projection/josm-epsg	(revision 9578)
+++ /trunk/data_nodist/projection/josm-epsg	(revision 9579)
@@ -40,5 +40,5 @@
 <2973> +proj=utm +zone=20 +ellps=intl +towgs84=126.926,547.939,130.409,-2.7867,5.16124,-0.85844,13.82265 +units=m +bounds=-61.25,14.25,-60.725,15.025  <>
 # UTM France (DOM) Reunion
-<2975> +proj=utm +zone=40 +south +ellps=GRS80 +nadgrids=null +units=m +bounds=37.58,-25.92,58.27,-10.6  <>
+<2975> +proj=utm +zone=40 +south +ellps=GRS80 +nadgrids=null +units=m +bounds=51,-25.92,58.27,-10.6  <>
 # Monte Mario / Italy zone 1
 <3003> +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +bounds=5,36,13,48 <>
Index: /trunk/src/org/openstreetmap/josm/data/projection/proj/SwissObliqueMercator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/projection/proj/SwissObliqueMercator.java	(revision 9578)
+++ /trunk/src/org/openstreetmap/josm/data/projection/proj/SwissObliqueMercator.java	(revision 9579)
@@ -43,4 +43,5 @@
     private double b0;
     private double k;
+    private double phi0;
 
     private static final double EPSILON = 1e-11;
@@ -55,5 +56,5 @@
 
     private void initialize(double lat_0) {
-        double phi0 = toRadians(lat_0);
+        phi0 = toRadians(lat_0);
         kR = sqrt(1 - ellps.e2) / (1 - (ellps.e2 * pow(sin(phi0), 2)));
         alpha = sqrt(1 + (ellps.eb2 * pow(cos(phi0), 4)));
@@ -118,5 +119,9 @@
     @Override
     public Bounds getAlgorithmBounds() {
-        return new Bounds(-85, -179, 85, 179, false);
+        if (phi0 > 0) {
+            return new Bounds(-10, -40, 85, 40, false);
+        } else {
+            return new Bounds(-85, -40, 10, 40, false);
+        }
     }
 }
