Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/config/interpolate_axis_attribute.conf
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/config/interpolate_axis_attribute.conf	(revision 2327)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/config/interpolate_axis_attribute.conf	(revision 2328)
@@ -5,2 +5,4 @@
 DECLARE_ATTRIBUTE(StdString, coordinate_src)
 DECLARE_ATTRIBUTE(StdString, coordinate_dst)
+DECLARE_ATTRIBUTE(bool, extrapolate)
+
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.cpp	(revision 2327)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.cpp	(revision 2328)
@@ -82,4 +82,8 @@
 
     order_ = interpAxis->order.getValue();
+    
+    if (interpAxis->extrapolate.isEmpty()) extrapolate_=true ;
+    else extrapolate_=interpAxis->extrapolate ;
+
     if (!interpAxis->coordinate.isEmpty())
     {
@@ -287,7 +291,16 @@
         for(int i=0; i < ndst;i++)
         {
+          bool intrapolating( true );
           x=dstCoordinate[dstIndex[i]] ;
-          if ( x<=srcCoordinate[srcIndex[0]]) lastj=0 ;
-          else if (x>=srcCoordinate[srcIndex[nsrc-1]]) lastj=nsrc-2 ;
+          if ( x<=srcCoordinate[srcIndex[0]])
+          {
+            lastj=0 ;
+            intrapolating = false;
+          }
+          else if (x>=srcCoordinate[srcIndex[nsrc-1]])
+          {
+            lastj=nsrc-2 ;
+            intrapolating = false;
+          }
           else
           {
@@ -298,10 +311,17 @@
             }  
           }
-          x0=srcCoordinate[srcIndex[lastj]] ;
-          x1=srcCoordinate[srcIndex[lastj+1]] ;
-          y0=srcValue[srcIndex[lastj]] ;
-          y1=srcValue[srcIndex[lastj+1]] ;
-          y=((x-x1)*y0-(x-x0)*y1)/(x0-x1) ;
-          dstValue[dstIndex[i]]=y ;
+          if ((!extrapolate_) && (!intrapolating))
+          {
+            dstValue[dstIndex[i]]= std::numeric_limits<double>::quiet_NaN() ;
+          }
+          else
+          {
+            x0=srcCoordinate[srcIndex[lastj]] ;
+            x1=srcCoordinate[srcIndex[lastj+1]] ;
+            y0=srcValue[srcIndex[lastj]] ;
+            y1=srcValue[srcIndex[lastj+1]] ;
+            y=((x-x1)*y0-(x-x0)*y1)/(x0-x1) ;
+            dstValue[dstIndex[i]]=y ;
+          }
         }
       }
@@ -315,7 +335,16 @@
       for(int i=0; i < ndst;i++)
       {
+        bool intrapolating( true );
         x=dstCoordinate[dstIndex[i]] ;
-        if ( x<=srcCoordinate[srcIndex[0]]) lastj=0 ;
-        else if (x>=srcCoordinate[srcIndex[nsrc-1]]) lastj=nsrc-2 ;
+        if ( x<=srcCoordinate[srcIndex[0]])
+        {
+          lastj=0 ;
+          intrapolating = false;
+        }
+        else if (x>=srcCoordinate[srcIndex[nsrc-1]])
+        {
+          lastj=nsrc-2 ;
+          intrapolating = false;
+        }
         else
         {
@@ -333,14 +362,22 @@
           if ( (x-srcCoordinate[srcIndex[lastj-1]]) > (srcCoordinate[srcIndex[lastj+2]]-x) ) cj=lastj ;
           else cj=lastj+1 ;
-        } 
-        x0=srcCoordinate[srcIndex[cj-1]] ;
-        x1=srcCoordinate[srcIndex[cj]] ;
-        x2=srcCoordinate[srcIndex[cj+1]] ;
-        y0=srcValue[srcIndex[cj-1]] ;
-        y1=srcValue[srcIndex[cj]] ;
-        y2=srcValue[srcIndex[cj+1]] ;
-            
-        y=y0*(x-x1)*(x-x2)/((x0-x1)*(x0-x2)) + y1*(x-x0)*(x-x2)/((x1-x0)*(x1-x2)) + y2*(x-x0)*(x-x1)/((x2-x0)*(x2-x1))  ;
-        dstValue[dstIndex[i]]=y ;
+        }
+        if ((!extrapolate_) && (!intrapolating))
+        {
+          dstValue[dstIndex[i]]= std::numeric_limits<double>::quiet_NaN() ;
+        }
+        else
+        {
+          x0=srcCoordinate[srcIndex[cj-1]] ;
+          x1=srcCoordinate[srcIndex[cj]] ;
+          x2=srcCoordinate[srcIndex[cj+1]] ;
+          y0=srcValue[srcIndex[cj-1]] ;
+          y1=srcValue[srcIndex[cj]] ;
+          y2=srcValue[srcIndex[cj+1]] ;
+          
+          y=y0*(x-x1)*(x-x2)/((x0-x1)*(x0-x2)) + y1*(x-x0)*(x-x2)/((x1-x0)*(x1-x2)) + y2*(x-x0)*(x-x1)/((x2-x0)*(x2-x1))  ;
+          dstValue[dstIndex[i]]=y ;
+        }
+
       }
     }
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.hpp	(revision 2327)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.hpp	(revision 2328)
@@ -45,4 +45,5 @@
   // Interpolation order
   int order_;
+  bool extrapolate_ ;
   StdString coordinateSrc_; // pressure src
   StdString coordinateDest_; // pressure dst
