diff --git a/Code/Projections/otbMapProjection.h b/Code/Projections/otbMapProjection.h
index e532a5aa9311e5250cb8fe2e6fe44067088ab5f9..ea3941a4f74bf375b82ccebbc2b71c15fa9915d4 100644
--- a/Code/Projections/otbMapProjection.h
+++ b/Code/Projections/otbMapProjection.h
@@ -75,8 +75,9 @@ itkNewMacro( Self );
 	/** Run-time type information (and related methods). */
 	itkTypeMacro( MapProjection, Transform );
 
+typedef InverseOrForwardTransformationEnum DirectionOfMappingEnumType;
 	
-  itkStaticConstMacro(DirectionOfMapping,InverseOrForwardTransformationEnum,transform);
+  itkStaticConstMacro(DirectionOfMapping,DirectionOfMappingEnumType,transform);
   itkStaticConstMacro(InputSpaceDimension, unsigned int, NInputDimensions);
   itkStaticConstMacro(OutputSpaceDimension, unsigned int, NOutputDimensions);
   itkStaticConstMacro(SpaceDimension, unsigned int, NInputDimensions);
diff --git a/Code/Projections/otbMapProjection.txx b/Code/Projections/otbMapProjection.txx
index cb6384661e3a5aee859227bc566f687feb86b990..c9c7e7bc98e3172be6b80c6f013b99f2bd9a5125 100644
--- a/Code/Projections/otbMapProjection.txx
+++ b/Code/Projections/otbMapProjection.txx
@@ -136,34 +136,40 @@ MapProjection<TOssimMapProjection, TScalarType, NInputDimensions, NOutputDimensi
 {
 	OutputPointType outputPoint;
 	
-	if (DirectionOfMapping == INVERSE)
-	{
-		//On transforme le type "itk::point" en type "ossim::ossimDpt" 
-  	ossimDpt ossimDPoint(point[0], point[1]);
-  
-  	//On le proj�te sur la carte 
-  	ossimGpt ossimGPoint;
-  	ossimGPoint=m_MapProjection->inverse(ossimDPoint);
-	
-  	outputPoint[0]=ossimGPoint.lat;
-  	outputPoint[1]=ossimGPoint.lon;
-	}
-	else if (DirectionOfMapping == FORWARD)
+	switch(DirectionOfMapping)
+	  {
+	case INVERSE:
+	  {
+	    //On transforme le type "itk::point" en type "ossim::ossimDpt" 
+	    ossimDpt ossimDPoint(point[0], point[1]);
+	    
+	    //On le proj�te sur la carte 
+	    ossimGpt ossimGPoint;
+	    ossimGPoint=m_MapProjection->inverse(ossimDPoint);
+	    
+	    outputPoint[0]=ossimGPoint.lat;
+	    outputPoint[1]=ossimGPoint.lon;
+	    break;
+	  }
+	  case FORWARD:
 	{
 		//On transforme le type "itk::point" en type "ossim::ossimGpt" 
-  	ossimGpt ossimGPoint(point[0], point[1]);
-  
-  	//On le proj�te sur la carte 
-  	ossimDpt ossimDPoint;
-  	ossimDPoint=m_MapProjection->forward(ossimGPoint);
-
-  	outputPoint[0]=ossimDPoint.x;
-  	outputPoint[1]=ossimDPoint.y;
+	  ossimGpt ossimGPoint(point[0], point[1]);
+	  
+	  //On le proj�te sur la carte 
+	  ossimDpt ossimDPoint;
+	  ossimDPoint=m_MapProjection->forward(ossimGPoint);
+	  
+	  outputPoint[0]=ossimDPoint.x;
+	  outputPoint[1]=ossimDPoint.y;
+	  break;
 	}
-	else
-	{
-		itkExceptionMacro(<<"Model is INVERSE or FORWARD only !!");
-	}	
+	  default:
+	    {
+	      itkExceptionMacro(<<"Model is INVERSE or FORWARD only !!");
+	      break;
+	    }	
+	  }
   
 	return outputPoint;
 }