diff --git a/Code/IO/otbMapProjectionWrapper.cxx b/Code/IO/otbMapProjectionWrapper.cxx
index 4653cf92a38a1bbf5806c2654ad88df285a683d0..876af945777cb95273a4cb9efbfa52df5f03af4c 100644
--- a/Code/IO/otbMapProjectionWrapper.cxx
+++ b/Code/IO/otbMapProjectionWrapper.cxx
@@ -111,9 +111,12 @@ bool MapProjectionWrapper::InstanciateProjection()
     //we don't want to have a ossimEquDistCylProjection here:
     //see discussion in May 2009 on ossim list;
     //a better solution might be available...
-    if (std::string(kwl.find("type")) == "ossimEquDistCylProjection") //FIXME
+    std::string projectionString(kwl.find("type"));
+    if (projectionString.find("ossimEquDistCylProjection") != string::npos)
       {
-      otbMsgDevMacro(<< "WARNING: Not instanciating a ossimEquDistCylProjection");
+      otbMsgDevMacro(<< "WARNING: Not instanciating a ossimEquDistCylProjection: " << projectionString);
+      otbMsgDevMacro(<< "Wkt was: " << kwl);
+      otbMsgDevMacro(<< "From RefWkt: " << m_ProjectionRefWkt);
       return false;
       }
 
@@ -128,6 +131,15 @@ bool MapProjectionWrapper::InstanciateProjection()
 void MapProjectionWrapper::InverseTransform(double x, double y, double z,
                                        double& lon, double& lat, double& h)
 {
+  if (m_MapProjection == NULL)
+    {
+    otbMsgDevMacro(<< "WARNING: Using identity");
+    lon = x;
+    lat = y;
+    h = z;
+    return;
+    }
+
   ossimDpt ossimDPoint(x, y);
 
   //map projection
@@ -143,6 +155,15 @@ void MapProjectionWrapper::InverseTransform(double x, double y, double z,
 void MapProjectionWrapper::ForwardTransform(double lon, double lat, double h,
                                        double& x, double& y, double& z)
 {
+  if (m_MapProjection == NULL)
+    {
+    otbMsgDevMacro(<< "WARNING: Using identity");
+    x = lon;
+    y = lat;
+    z = h;
+    return;
+    }
+
   ossimGpt ossimGPoint(lat, lon, h);
 
   //map projection