Index: XIOS/dev/XIOS_DEV_CMIP6/src/config/interpolate_domain_attribute.conf
===================================================================
--- XIOS/dev/XIOS_DEV_CMIP6/src/config/interpolate_domain_attribute.conf	(revision 1268)
+++ XIOS/dev/XIOS_DEV_CMIP6/src/config/interpolate_domain_attribute.conf	(revision 1269)
@@ -9,2 +9,3 @@
 DECLARE_ATTRIBUTE(StdString, weight_filename)
 DECLARE_ATTRIBUTE(bool, write_weight)
+DECLARE_ENUM2(read_write_convention, c, fortran)
Index: XIOS/dev/XIOS_DEV_CMIP6/src/node/interpolate_domain.cpp
===================================================================
--- XIOS/dev/XIOS_DEV_CMIP6/src/node/interpolate_domain.cpp	(revision 1268)
+++ XIOS/dev/XIOS_DEV_CMIP6/src/node/interpolate_domain.cpp	(revision 1269)
@@ -63,41 +63,5 @@
     if (this->write_weight.isEmpty()) this->write_weight.setValue(false);
 
-    StdString weightFile;
-    switch (this->mode)
-    {
-      case mode_attr::read:
-        if (this->weight_filename.isEmpty())
-        {
-          if (!this->write_weight)
-            ERROR("void CInterpolateDomain::checkValid(CDomain* domainSrc)",
-                 << "Read mode is activated but there is no file specified." << std::endl
-                 << "Please define a correct file containing interpolation weights with option 'file'. ");
-        }
-        else
-        {
-          weightFile = this->weight_filename;
-          ifstream f(weightFile.c_str());
-          if (!f.good())
-            ERROR("void CInterpolateDomain::checkValid(CDomain* domainSrc)",
-                  << "Read mode is activated but file "  << weightFile << " doesn't exist." << std::endl
-                  << "Please check this file ");
-        }
-        break;
-      case mode_attr::compute:
-        break;
-      case mode_attr::read_or_compute:
-        if (!this->weight_filename.isEmpty() && !this->write_weight)
-        {
-          weightFile = this->weight_filename;
-          ifstream f(weightFile.c_str());
-          if (!f.good())
-            ERROR("void CInterpolateDomain::checkValid(CDomain* domainSrc)",
-                  << "read_or_compute mode is activated but file "  << weightFile << " doesn't exist." << std::endl
-                  << "Please check this file ");
-        }
-        break;
-      default:
-        break;
-    }
+    if (this->read_write_convention.isEmpty()) this->read_write_convention.setValue(read_write_convention_attr::fortran);
 
   }
Index: XIOS/dev/XIOS_DEV_CMIP6/src/transformation/domain_algorithm_interpolate.cpp
===================================================================
--- XIOS/dev/XIOS_DEV_CMIP6/src/transformation/domain_algorithm_interpolate.cpp	(revision 1268)
+++ XIOS/dev/XIOS_DEV_CMIP6/src/transformation/domain_algorithm_interpolate.cpp	(revision 1269)
@@ -56,4 +56,7 @@
   renormalize = interpDomain_->renormalize ;
   quantity = interpDomain_->quantity ;
+
+  if (interpDomain_->read_write_convention == CInterpolateDomain::read_write_convention_attr::fortran) fortranConvention=true ;
+  else fortranConvention=false ;
   
   fileToReadWrite_ = "xios_interpolation_weights_";
@@ -768,4 +771,6 @@
 
   int index = 0;
+  int indexOffset=0 ;
+  if (fortranConvention) indexOffset=1 ;
   for (it = itb; it !=ite; ++it)
   {
@@ -773,6 +778,6 @@
     for (int idx = 0; idx < tmp.size(); ++idx)
     {
-      dst_idx(index) = it->first + 1;
-      src_idx(index) = tmp[idx].first + 1;
+      dst_idx(index) = it->first + indexOffset;
+      src_idx(index) = tmp[idx].first + indexOffset;
       weights(index) = tmp[idx].second;
       ++index;
@@ -884,7 +889,9 @@
   nc_get_vara_long(ncid, dstIndexId, &start, &nbWeight, dstIndex) ;
 
-  for(size_t ind=0; ind<nbWeight;++ind)
-    interpMapValue[dstIndex[ind]-1].push_back(make_pair(srcIndex[ind]-1,weight[ind]));
-}
+  int indexOffset=0 ;
+  if (fortranConvention) indexOffset=1 ;
+    for(size_t ind=0; ind<nbWeight;++ind)
+      interpMapValue[dstIndex[ind]-indexOffset].push_back(make_pair(srcIndex[ind]-indexOffset,weight[ind]));
+ }
 
 void CDomainAlgorithmInterpolate::apply(const std::vector<std::pair<int,double> >& localIndex,
Index: XIOS/dev/XIOS_DEV_CMIP6/src/transformation/domain_algorithm_interpolate.hpp
===================================================================
--- XIOS/dev/XIOS_DEV_CMIP6/src/transformation/domain_algorithm_interpolate.hpp	(revision 1268)
+++ XIOS/dev/XIOS_DEV_CMIP6/src/transformation/domain_algorithm_interpolate.hpp	(revision 1269)
@@ -63,4 +63,5 @@
   bool readFromFile_;
   StdString fileToReadWrite_;
+  bool fortranConvention ;
 
   // class WriteNetCdf;
