Index: /applications/editors/josm/plugins/proj4j/patches/01proj4j-transverse-mercator-fix.patch
===================================================================
--- /applications/editors/josm/plugins/proj4j/patches/01proj4j-transverse-mercator-fix.patch	(revision 26410)
+++ /applications/editors/josm/plugins/proj4j/patches/01proj4j-transverse-mercator-fix.patch	(revision 26410)
@@ -0,0 +1,60 @@
+Taken from the jmapprojlib project, fixes Gauß-Krüger projection, wich was completly broken.
+Index: proj4j/src/org/osgeo/proj4j/proj/TransverseMercatorProjection.java
+===================================================================
+--- proj4j.orig/src/org/osgeo/proj4j/proj/TransverseMercatorProjection.java	2011-07-28 11:33:32.954642678 +0200
++++ proj4j/src/org/osgeo/proj4j/proj/TransverseMercatorProjection.java	2011-07-28 11:33:41.946687270 +0200
+@@ -16,6 +16,11 @@
+ 
+ /*
+  * This file was semi-automatically converted from the public-domain USGS PROJ source.
++ *
++ * Bernhard Jenny, February 2 2010: Corrected code for spherical case in
++ * projectInverse, added isConformal.
++ * 27 September 2010: added missing tests to forward spherical, removed
++ * initialization code in constructor.
+  */
+ package org.osgeo.proj4j.proj;
+ 
+@@ -154,13 +159,24 @@
+ 
+ 	public ProjCoordinate projectInverse(double x, double y, ProjCoordinate out) {
+ 		if (spherical) {
+-			double h = Math.exp(x / scaleFactor);
+-			double g = .5 * (h - 1. / h);
+-			h = Math.cos(projectionLatitude + y / scaleFactor);
+-			out.y = ProjectionMath.asin(Math.sqrt((1. - h*h) / (1. + g*g)));
+-			if (y < 0)
+-				out.y = -out.y;
+-			out.x = Math.atan2(g, h);
++			/*
++			Original code
++			x = Math.exp(x / scaleFactor);
++			y = .5 * (x - 1. / x);
++			x = Math.cos(projectionLatitude + y / scaleFactor);
++			out.y = MapMath.asin(Math.sqrt((1. - x * x) / (1. + y * y)));
++			if (y < 0) {
++			out.y = -out.y;
++			}
++			out.x = Math.atan2(y, x);
++			 */
++
++			// new code by Bernhard Jenny, February 2 2010
++			double D = y / scaleFactor + projectionLatitude;
++			double xp = x / scaleFactor;
++
++			out.y = Math.asin(Math.sin(D) / Math.cosh(xp));
++			out.x = Math.atan2(Math.sinh(xp), Math.cos(D));
+ 		} else {
+ 			double n, con, cosphi, d, ds, sinphi, t;
+ 
+@@ -196,6 +212,10 @@
+ 	public boolean hasInverse() {
+ 		return true;
+ 	}
++	
++	public boolean isConformal() {
++		return true;
++	}
+ 
+ 	public String toString() {
+     if (utmZone >= 0)
Index: /applications/editors/josm/plugins/proj4j/patches/series
===================================================================
--- /applications/editors/josm/plugins/proj4j/patches/series	(revision 26410)
+++ /applications/editors/josm/plugins/proj4j/patches/series	(revision 26410)
@@ -0,0 +1,1 @@
+01proj4j-transverse-mercator-fix.patch
Index: /applications/editors/josm/plugins/proj4j/src/org/osgeo/proj4j/proj/TransverseMercatorProjection.java
===================================================================
--- /applications/editors/josm/plugins/proj4j/src/org/osgeo/proj4j/proj/TransverseMercatorProjection.java	(revision 26409)
+++ /applications/editors/josm/plugins/proj4j/src/org/osgeo/proj4j/proj/TransverseMercatorProjection.java	(revision 26410)
@@ -17,4 +17,9 @@
 /*
  * This file was semi-automatically converted from the public-domain USGS PROJ source.
+ *
+ * Bernhard Jenny, February 2 2010: Corrected code for spherical case in
+ * projectInverse, added isConformal.
+ * 27 September 2010: added missing tests to forward spherical, removed
+ * initialization code in constructor.
  */
 package org.osgeo.proj4j.proj;
@@ -155,11 +160,22 @@
 	public ProjCoordinate projectInverse(double x, double y, ProjCoordinate out) {
 		if (spherical) {
-			double h = Math.exp(x / scaleFactor);
-			double g = .5 * (h - 1. / h);
-			h = Math.cos(projectionLatitude + y / scaleFactor);
-			out.y = ProjectionMath.asin(Math.sqrt((1. - h*h) / (1. + g*g)));
-			if (y < 0)
-				out.y = -out.y;
-			out.x = Math.atan2(g, h);
+			/*
+			Original code
+			x = Math.exp(x / scaleFactor);
+			y = .5 * (x - 1. / x);
+			x = Math.cos(projectionLatitude + y / scaleFactor);
+			out.y = MapMath.asin(Math.sqrt((1. - x * x) / (1. + y * y)));
+			if (y < 0) {
+			out.y = -out.y;
+			}
+			out.x = Math.atan2(y, x);
+			 */
+
+			// new code by Bernhard Jenny, February 2 2010
+			double D = y / scaleFactor + projectionLatitude;
+			double xp = x / scaleFactor;
+
+			out.y = Math.asin(Math.sin(D) / Math.cosh(xp));
+			out.x = Math.atan2(Math.sinh(xp), Math.cos(D));
 		} else {
 			double n, con, cosphi, d, ds, sinphi, t;
@@ -197,4 +213,8 @@
 		return true;
 	}
+	
+	public boolean isConformal() {
+		return true;
+	}
 
 	public String toString() {
