diff --git a/program/source/interpol/interpol.cc b/program/source/interpol/interpol.cc
index 06b470c472490a49a545b7874716e4c650b826a9..15722aa4fa473b0da1deb5d39723542a40181481 100644
--- a/program/source/interpol/interpol.cc
+++ b/program/source/interpol/interpol.cc
@@ -140,17 +140,19 @@ void Interpolate_on_structured_grid::update_Interpolate_on_structured_grid(Block
 
         D3vector lam;
 
-
+        blockgrid = &blockgrid_;
+        ug = blockgrid->Give_unstructured_grid();
+	
           //Variable<double> coordXYZ(*blockgrid);
           X_coordinate Xc(blockgrid_);
           Y_coordinate Yc(blockgrid_);
           Z_coordinate Zc(blockgrid_);
           //D3vector pWSD, pENT;
-          pWSD.x = Minimum(Xc);    pWSD.y = Minimum(Yc);    pWSD.z = Minimum(Zc);
-          pENT.x = Maximum(Xc);    pENT.y = Maximum(Yc);    pENT.z = Maximum(Zc);
+	  Boundary_Marker boundary(ug);
+	  
+          pWSD.x = Minimum(Xc,boundary);    pWSD.y = Minimum(Yc,boundary);    pWSD.z = Minimum(Zc,boundary);
+          pENT.x = Maximum(Xc,boundary);    pENT.y = Maximum(Yc,boundary);    pENT.z = Maximum(Zc,boundary);
 
-        blockgrid = &blockgrid_;
-        ug = blockgrid->Give_unstructured_grid();
 
 
 
@@ -835,11 +837,17 @@ Interpolate_on_structured_grid::Interpolate_on_structured_grid(int nx_, int ny_,
     Y_coordinate Yc(blockgrid_);
     Z_coordinate Zc(blockgrid_);
     //D3vector pWSD, pENT;
-    pWSD.x = Minimum(Xc);    pWSD.y = Minimum(Yc);    pWSD.z = Minimum(Zc);
-    pENT.x = Maximum(Xc);    pENT.y = Maximum(Yc);    pENT.z = Maximum(Zc);
+  //  pWSD.x = Minimum(Xc);    pWSD.y = Minimum(Yc);    pWSD.z = Minimum(Zc);
+  //  pENT.x = Maximum(Xc);    pENT.y = Maximum(Yc);    pENT.z = Maximum(Zc);
 
   blockgrid = &blockgrid_;
   ug = blockgrid->Give_unstructured_grid();
+  
+  Boundary_Marker boundary(ug);
+	  
+  pWSD.x = Minimum(Xc,boundary);    pWSD.y = Minimum(Yc,boundary);    pWSD.z = Minimum(Zc,boundary);
+  pENT.x = Maximum(Xc,boundary);    pENT.y = Maximum(Yc,boundary);    pENT.z = Maximum(Zc,boundary);  
+  
 
   nx = nx_;
   ny = ny_;
@@ -936,9 +944,15 @@ Interpolate_on_block_grid::Interpolate_on_block_grid(int nx_, int ny_, int nz_,
     Y_coordinate Yc(*blockgrid_to);
     Z_coordinate Zc(*blockgrid_to);
 
-    pWSD.x = Minimum(Xc);    pWSD.y = Minimum(Yc);    pWSD.z = Minimum(Zc);
-    pENT.x = Maximum(Xc);    pENT.y = Maximum(Yc);    pENT.z = Maximum(Zc);
-
+    //pWSD.x = Minimum(Xc);    pWSD.y = Minimum(Yc);    pWSD.z = Minimum(Zc);
+    //pENT.x = Maximum(Xc);    pENT.y = Maximum(Yc);    pENT.z = Maximum(Zc);
+  
+    Boundary_Marker boundary(blockgrid_to->Give_unstructured_grid());
+	  
+    pWSD.x = Minimum(Xc,boundary);    pWSD.y = Minimum(Yc,boundary);    pWSD.z = Minimum(Zc,boundary);
+    pENT.x = Maximum(Xc,boundary);    pENT.y = Maximum(Yc,boundary);    pENT.z = Maximum(Zc,boundary);      
+    
+    
     interpolatorStructured = new Interpolate_on_structured_grid(nx,ny,nz, pWSD, pENT, *blockgrid_from);
     data = new double[nx*ny*nz];
 
@@ -1064,8 +1078,13 @@ PointInterpolator::PointInterpolator(int nx_, int ny_, int nz_,
     X_coordinate Xc(*blockgrid_from);
     Y_coordinate Yc(*blockgrid_from);
     Z_coordinate Zc(*blockgrid_from);
-    pWSD.x = Minimum(Xc);    pWSD.y = Minimum(Yc);    pWSD.z = Minimum(Zc);
-    pENT.x = Maximum(Xc);    pENT.y = Maximum(Yc);    pENT.z = Maximum(Zc);
+    //pWSD.x = Minimum(Xc);    pWSD.y = Minimum(Yc);    pWSD.z = Minimum(Zc);
+    //pENT.x = Maximum(Xc);    pENT.y = Maximum(Yc);    pENT.z = Maximum(Zc);
+
+    Boundary_Marker boundary(blockgrid_from->Give_unstructured_grid());
+	  
+    pWSD.x = Minimum(Xc,boundary);    pWSD.y = Minimum(Yc,boundary);    pWSD.z = Minimum(Zc,boundary);
+    pENT.x = Maximum(Xc,boundary);    pENT.y = Maximum(Yc,boundary);    pENT.z = Maximum(Zc,boundary);      
 
 
     interpolatorStructured = new Interpolate_on_structured_grid(nx,ny,nz, pWSD, pENT, *blockgrid_from, trilinearInterpolation_);