Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java	(revision 28054)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java	(revision 28055)
@@ -36,4 +36,5 @@
 import org.opengis.referencing.FactoryException;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
+import org.opengis.referencing.crs.GeographicCRS;
 import org.opengis.referencing.datum.GeodeticDatum;
 import org.opengis.referencing.operation.MathTransform;
@@ -474,5 +475,7 @@
 	
 	public MathTransform findMathTransform(CoordinateReferenceSystem sourceCRS, CoordinateReferenceSystem targetCRS, boolean lenient) throws FactoryException {
-		if (sourceCRS instanceof AbstractDerivedCRS && sourceCRS.getName().getCode().equalsIgnoreCase("Lambert_Conformal_Conic")) {
+		if (sourceCRS instanceof GeographicCRS && sourceCRS.getName().getCode().equalsIgnoreCase("GCS_ETRS_1989")) {
+			return CRS.findMathTransform(CRS.decode("EPSG:4258"), targetCRS, lenient);
+		} else if (sourceCRS instanceof AbstractDerivedCRS && sourceCRS.getName().getCode().equalsIgnoreCase("Lambert_Conformal_Conic")) {
 			List<MathTransform> result = new ArrayList<MathTransform>();
 			AbstractDerivedCRS crs = (AbstractDerivedCRS) sourceCRS;
@@ -558,3 +561,7 @@
 		return setSkipXsdValidationInZipReading;
 	}
+
+	public void notifyTempFileWritten(File file) {
+		// Do nothing, let handler overload this method if they need it
+	}
 }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReader.java	(revision 28054)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReader.java	(revision 28055)
@@ -107,4 +107,5 @@
 			    		throw new IOException("Could not create temp file: " + file.getAbsolutePath());
 			    	}
+			    	// Write temp file
 					FileOutputStream fos = new FileOutputStream(file);
 					byte[] buffer = new byte[8192];
@@ -114,8 +115,14 @@
 					}
 					fos.close();
+					// Allow handler to perform specific treatments (for example, fix invalid .prj files)
+					if (handler != null) {
+						handler.notifyTempFileWritten(file);
+					}
+					// Set last modification date
 					long time = entry.getTime();
 					if (time > -1) {
 						file.setLastModified(time);
 					}
+					// Test file name to see if it may contain useful data
 					for (String ext : new String[] {
 							CSV_EXT, KML_EXT, KMZ_EXT, XLS_EXT, ODS_EXT, SHP_EXT, MIF_EXT, TAB_EXT
