Index: trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java	(revision 13572)
+++ trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java	(revision 13598)
@@ -79,4 +79,6 @@
     static Random rand = new SecureRandom();
 
+    static boolean debug;
+
     /**
      * Setup test.
@@ -92,4 +94,5 @@
      */
     public static void main(String[] args) throws IOException {
+        debug = args.length > 0 && "debug".equals(args[0]);
         Collection<RefEntry> refs = readData();
         refs = updateData(refs);
@@ -236,14 +239,31 @@
         pb.environment().put("PROJ_LIB", new File(PROJ_LIB_DIR).getAbsolutePath());
 
-        String output;
+        String output = "";
         try {
             Process process = pb.start();
             OutputStream stdin = process.getOutputStream();
             InputStream stdout = process.getInputStream();
+            InputStream stderr = process.getErrorStream();
             try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin, StandardCharsets.UTF_8))) {
-                writer.write(String.format("%.9f %.9f%n", ll.lon(), ll.lat()));
+                String s = String.format("%.9f %.9f%n", ll.lon(), ll.lat());
+                if (debug) {
+                    System.out.println("\n" + String.join(" ", args) + "\n" + s);
+                }
+                writer.write(s);
             }
             try (BufferedReader reader = new BufferedReader(new InputStreamReader(stdout, StandardCharsets.UTF_8))) {
-                output = reader.readLine();
+                String line;
+                while (null != (line = reader.readLine())) {
+                    if (debug) {
+                        System.out.println("> " + line);
+                    }
+                    output = line;
+                }
+            }
+            try (BufferedReader reader = new BufferedReader(new InputStreamReader(stderr, StandardCharsets.UTF_8))) {
+                String line;
+                while (null != (line = reader.readLine())) {
+                    System.err.println("! " + line);
+                }
             }
         } catch (IOException e) {
Index: trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java	(revision 13572)
+++ trunk/test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java	(revision 13598)
@@ -24,4 +24,7 @@
     String text;
 
+    /**
+     * Tests that projections are numerically stable in their definition bounds (round trip error &lt; 1e-5)
+     */
     @Test
     public void testProjections() {
@@ -55,4 +58,11 @@
             testProjection(Projections.getProjectionByCode("EPSG:"+Integer.toString(3942+i))); // Lambert CC9 Zones France
         }
+
+        for (int i = 0; i <= 17; ++i) {
+            testProjection(Projections.getProjectionByCode("EPSG:"+Integer.toString(102421+i))); // WGS_1984_ARC_System Zones
+        }
+
+        testProjection(Projections.getProjectionByCode("EPSG:102016")); // North Pole
+        testProjection(Projections.getProjectionByCode("EPSG:102019")); // South Pole
 
         if (error) {
@@ -104,4 +114,7 @@
     Collection<String> projIds;
 
+    /**
+     * Tests that projections are numerically stable in their definition bounds (round trip error &lt; epsilon)
+     */
     @Test
     public void testProjs() {
@@ -127,4 +140,7 @@
         testProj("merc", 1e-5, "");
         testProj("sinu", 1e-4, "");
+        testProj("aeqd", 1e-5, "+lon_0=0dE +lat_0=90dN");
+        testProj("aeqd", 1e-5, "+lon_0=0dE +lat_0=90dS");
+        testProj("eqc", 1e-5, "");
 
         if (error2) {
