Index: trunk/data_nodist/projection-regression-test-data.csv
===================================================================
--- trunk/data_nodist/projection-regression-test-data.csv	(revision 5229)
+++ trunk/data_nodist/projection-regression-test-data.csv	(revision 5230)
@@ -969,4 +969,16 @@
   en  3266743.101643809 8326980.665451931
   ll2 -15.122420619099696 174.82953069806615
+EPSG:31370
+  ll  49.91513996934379 3.0892264075922404
+  en  58108.251968638695 67871.94610605389
+  ll2 49.91513997291573 3.0892264054277314
+EPSG:3812
+  ll  50.76787953358437 3.4513353977071453
+  en  585284.6677650046 662323.5758590293
+  ll2 50.76787953358439 3.4513353977071453
+EPSG:21781
+  ll  46.582471410091934 8.159223152110604
+  en  655231.0208778976 159275.39184032555
+  ll2 46.58247142005926 8.159223160343661
 EPSG:31466
   ll  7.0210401440287065 6.5142293675331056
@@ -985,12 +997,4 @@
   en  5533907.888998117 8406162.271952605
   ll2 75.7147487977527 16.230800026412293
-EPSG:31370
-  ll  49.91513996934379 3.0892264075922404
-  en  58108.251968638695 67871.94610605389
-  ll2 49.91513997291573 3.0892264054277314
-EPSG:3812
-  ll  50.76787953358437 3.4513353977071453
-  en  585284.6677650046 662323.5758590293
-  ll2 50.76787953358439 3.4513353977071453
 EPSG:3301
   ll  59.493759099912154 27.525338967200614
@@ -999,17 +1003,17 @@
 EPSG:27561
   ll  48.687023294540744 9.13470536591202
-  en  1099861.4330225135 132165.34595185294
-  ll2 48.687023294540765 9.13470536591202
+  en  1099861.4328694288 132165.3475888513
+  ll2 48.687023294540765 9.134705365912021
 EPSG:27562
   ll  47.083336187611536 -1.6746579886431774
-  en  295565.1739406001 239272.03689665193
-  ll2 47.08333618761155 -1.6746579886431756
+  en  295565.17384739226 239272.03526596428
+  ll2 47.08333618761155 -1.6746579886431774
 EPSG:27563
   ll  46.443136133672226 5.992820527372115
-  en  881070.7804436726 466693.7684649829
-  ll2 46.44313613367226 5.992820527372116
+  en  881070.7805340261 466693.7656533603
+  ll2 46.44313613367226 5.992820527372114
 EPSG:27564
   ll  43.42400252536329 0.5163786716368639
-  en  -147178.22007173466 327298.1814310246
+  en  -147178.2200372536 327298.1840058803
   ll2 43.42400252536333 0.5163786716368636
 EPSG:2154
@@ -1101,6 +1105,2 @@
   en  128126.42078859449 6861850.502124558
   ll2 61.86405448889923 13.084399903079852
-EPSG:21781
-  ll  46.582471410091934 8.159223152110604
-  en  655231.0208778976 159275.39184032555
-  ll2 46.58247142005926 8.159223160343661
Index: trunk/src/org/openstreetmap/josm/data/projection/Lambert.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/Lambert.java	(revision 5229)
+++ trunk/src/org/openstreetmap/josm/data/projection/Lambert.java	(revision 5230)
@@ -6,5 +6,4 @@
 import java.awt.GridBagLayout;
 import java.awt.event.ActionListener;
-import java.io.InputStream;
 import java.util.Collection;
 import java.util.Collections;
@@ -14,9 +13,7 @@
 import javax.swing.JPanel;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.datum.NTV2Datum;
-import org.openstreetmap.josm.data.projection.datum.NTV2GridShiftFile;
 import org.openstreetmap.josm.data.projection.datum.NTV2GridShiftFileWrapper;
 import org.openstreetmap.josm.data.projection.proj.LambertConformalConic;
@@ -29,16 +26,32 @@
  * This newer version uses the grid translation NTF<->RGF93 provided by IGN for a submillimetric accuracy.
  * (RGF93 is the French geodetic system similar to WGS84 but not mathematically equal)
+ *
+ * Source: http://professionnels.ign.fr/DISPLAY/000/526/700/5267002/transformation.pdf
  * @author Pieren
  */
 public class Lambert extends AbstractProjection implements ProjectionSubPrefs {
-    /**
-     * Lambert I, II, III, and IV projection exponents
-     */
-    private static final double n[] = { 0.7604059656, 0.7289686274, 0.6959127966, 0.6712679322 };
-
-    /**
-     * Lambert I, II, III, and IV projection constants
-     */
-    private static final double c[] = { 11603796.98, 11745793.39, 11947992.52, 12136281.99 };
+
+    /**
+     * Lambert I, II, III, and IV latitude origin
+     */
+    private static final double lat_0s[] = { 49.5, 46.8, 44.1, 42.165 };
+    
+    /**
+     * Lambert I, II, III, and IV latitude of first standard parallel
+     */
+    private static final double lat_1s[] = { 
+            convertDegreeMinuteSecond(48, 35, 54.682), 
+            convertDegreeMinuteSecond(45, 53, 56.108),
+            convertDegreeMinuteSecond(43, 11, 57.449),
+            convertDegreeMinuteSecond(41, 33, 37.396)};
+    
+    /**
+     * Lambert I, II, III, and IV latitude of second standard parallel
+     */
+    private static final double lat_2s[] = {
+            convertDegreeMinuteSecond(50, 23, 45.282),
+            convertDegreeMinuteSecond(47, 41, 45.652),
+            convertDegreeMinuteSecond(44, 59, 45.938),
+            convertDegreeMinuteSecond(42, 46, 3.588)};
 
     /**
@@ -46,10 +59,10 @@
      */
     private static final double x_0s[] = { 600000.0, 600000.0, 600000.0, 234.358 };
-
+    
     /**
      * Lambert I, II, III, and IV false north
      */
-    private static final double y_fs[] = { 5657616.674, 6199695.768, 6791905.085, 7239161.542 };
-
+    private static final double y_0s[] = { 200000.0, 200000.0, 200000.0, 185861.369 };
+    
     /**
      * France is divided in 4 Lambert projection zones (1,2,3 + 4th for Corsica)
@@ -87,4 +100,5 @@
         datum = new NTV2Datum("ntf_rgf93Grid", null, ellps, NTV2GridShiftFileWrapper.ntf_rgf93);
         x_0 = x_0s[layoutZone];
+        y_0 = y_0s[layoutZone];
         lon_0 = 2.0 + 20.0 / 60 + 14.025 / 3600; // 0 grade Paris
         if (proj == null) {
@@ -95,7 +109,7 @@
             proj.initialize(new ProjParameters() {{
                 ellps = Lambert.this.ellps;
-                lcc_n = n[layoutZone];
-                lcc_F = c[layoutZone] / ellps.a;
-                lcc_r0 = y_fs[layoutZone] / ellps.a;
+                lat_0 = lat_0s[layoutZone];
+                lat_1 = lat_1s[layoutZone];
+                lat_2 = lat_2s[layoutZone];
             }});
         } catch (ProjectionConfigurationException e) {
Index: trunk/src/org/openstreetmap/josm/data/projection/proj/LambertConformalConic.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/proj/LambertConformalConic.java	(revision 5229)
+++ trunk/src/org/openstreetmap/josm/data/projection/proj/LambertConformalConic.java	(revision 5230)
@@ -67,14 +67,10 @@
         ellps = params.ellps;
         e = ellps.e;
-        if (params.lcc_n != null && params.lcc_F != null && params.lcc_r0 != null) {
-            initializeDirect(params.lcc_n, params.lcc_F, params.lcc_r0);
+        if (params.lat_0 == null)
+            throw new ProjectionConfigurationException(tr("Parameter ''{0}'' required.", "lat_0"));
+        if (params.lat_1 != null && params.lat_2 != null) {
+            initialize2SP(params.lat_0, params.lat_1, params.lat_2);
         } else {
-            if (params.lat_0 == null)
-                throw new ProjectionConfigurationException(tr("Parameter ''{0}'' required.", "lat_0"));
-            if (params.lat_1 != null && params.lat_2 != null) {
-                initialize2SP(params.lat_0, params.lat_1, params.lat_2);
-            } else {
-                initialize1SP(params.lat_0);
-            }
+            initialize1SP(params.lat_0);
         }
     }
@@ -117,18 +113,4 @@
         F  = m0 / (n * pow(t0, n));
         r0 = F * pow(t0, n);
-    }
-
-    /**
-     * Initialize LCC by providing the projection parameters directly.
-     *
-     * @param n see field n
-     * @param F see field F
-     * @param r0 see field r0
-     */
-    private void initializeDirect(double n, double F, double r0) {
-        this.params = null;
-        this.n = n;
-        this.F = F;
-        this.r0 = r0;
     }
 
Index: trunk/src/org/openstreetmap/josm/data/projection/proj/ProjParameters.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/proj/ProjParameters.java	(revision 5229)
+++ trunk/src/org/openstreetmap/josm/data/projection/proj/ProjParameters.java	(revision 5230)
@@ -15,8 +15,3 @@
     public Double lat_2;
 
-    /* for LambertConformalConic */
-    public Double lcc_n;
-    public Double lcc_F;
-    public Double lcc_r0;
-
 }
