Index: /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 14050)
+++ /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 14051)
@@ -88,10 +88,10 @@
 		gate.predictions  = predictions;
 		gate.error        = error;
-		gate.percent      = xNewZeroInit<double>(num);
+		gate.numdone      = xNewZeroInit<int>(num);
 
 		/*launch the thread manager with Krigingxt as a core: */
 		LaunchThread(NearestNeighbort,(void*)&gate,num);
 		_printLine_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%");
-		xDelete<double>(gate.percent);
+		xDelete<int>(gate.numdone);
 	}
 	else if(strcmp(output,"idw")==0){ //Inverse distance weighting
@@ -109,5 +109,5 @@
 		gate.predictions  = predictions;
 		gate.error        = error;
-		gate.percent      = xNewZeroInit<double>(num);
+		gate.numdone      = xNewZeroInit<int>(num);
 		gate.power        = power;
 
@@ -115,5 +115,5 @@
 		LaunchThread(idwt,(void*)&gate,num);
 		_printLine_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%");
-		xDelete<double>(gate.percent);
+		xDelete<int>(gate.numdone);
 	}
 	else if(strcmp(output,"v4")==0){ //Inverse distance weighting
@@ -129,10 +129,10 @@
 		gate.predictions  = predictions;
 		gate.error        = error;
-		gate.percent      = xNewZeroInit<double>(num);
+		gate.numdone      = xNewZeroInit<int>(num);
 
 		/*launch the thread manager with Krigingxt as a core: */
 		LaunchThread(v4t,(void*)&gate,num);
 		_printLine_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%");
-		xDelete<double>(gate.percent);
+		xDelete<int>(gate.numdone);
 	}
 	else if(strcmp(output,"prediction")==0){
@@ -149,10 +149,10 @@
 		gate.predictions  = predictions;
 		gate.error        = error;
-		gate.percent      = xNewZeroInit<double>(num);
+		gate.numdone      = xNewZeroInit<int>(num);
 
 		/*launch the thread manager with Krigingxt as a core: */
 		LaunchThread(Krigingxt,(void*)&gate,num);
 		_printLine_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%");
-		xDelete<double>(gate.percent);
+		xDelete<int>(gate.numdone);
 	}
 	else{
@@ -195,8 +195,5 @@
 	double       *predictions  = gate->predictions;
 	double       *error        = gate->error;
-	double       *percent      = gate->percent;
-
-	/*Intermediaries*/
-	double        localpercent;
+	int          *numdone      = gate->numdone;
 
 	/*partition loop across threads: */
@@ -205,8 +202,10 @@
 
 		/*Print info*/
-		percent[my_thread]=double(idx-i0)/double(i1-i0)*100.;
-		localpercent=percent[0];
-		for(int i=1;i<num_threads;i++) localpercent=min(localpercent,percent[i]);
-		if(my_thread==0) _printString_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<localpercent<<"%");
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printString_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%");
+		}
 
 		/*Kriging interpolation*/
@@ -243,9 +242,5 @@
 	double       *predictions  = gate->predictions;
 	double       *error        = gate->error;
-	double       *percent      = gate->percent;
-
-	/*Intermediaries*/
-	int           i;
-	double        localpercent;
+	int          *numdone      = gate->numdone;
 
 	/*partition loop across threads: */
@@ -254,8 +249,10 @@
 
 		/*Print info*/
-		percent[my_thread]=double(idx-i0)/double(i1-i0)*100.;
-		localpercent=percent[0];
-		for(i=1;i<num_threads;i++) localpercent=min(localpercent,percent[i]);
-		if(my_thread==0) _printString_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<localpercent<<"%");
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printString_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%");
+		}
 
 		observations->InterpolationNearestNeighbor(&predictions[idx],x_interp[idx],y_interp[idx],radius);
@@ -291,9 +288,6 @@
 	double       *predictions  = gate->predictions;
 	double       *error        = gate->error;
-	double       *percent      = gate->percent;
+	int          *numdone      = gate->numdone;
 	double        power        = gate->power;
-
-	/*Intermediaries*/
-	double localpercent;
 
 	/*partition loop across threads: */
@@ -302,8 +296,10 @@
 
 		/*Print info*/
-		percent[my_thread]=double(idx-i0)/double(i1-i0)*100.;
-		localpercent=percent[0];
-		for(int i=1;i<num_threads;i++) localpercent=min(localpercent,percent[i]);
-		if(my_thread==0) _printString_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<localpercent<<"%");
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printString_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%");
+		}
 
 		observations->InterpolationIDW(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata,power);
@@ -338,8 +334,5 @@
 	double       *predictions  = gate->predictions;
 	double       *error        = gate->error;
-	double       *percent      = gate->percent;
-
-	/*Intermediaries*/
-	double localpercent;
+	int          *numdone      = gate->numdone;
 
 	/*partition loop across threads: */
@@ -348,8 +341,10 @@
 
 		/*Print info*/
-		percent[my_thread]=double(idx-i0)/double(i1-i0)*100.;
-		localpercent=percent[0];
-		for(int i=1;i<num_threads;i++) localpercent=min(localpercent,percent[i]);
-		if(my_thread==0) _printString_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<localpercent<<"%");
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printString_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%");
+		}
 
 		observations->InterpolationV4(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata);
Index: /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.h	(revision 14050)
+++ /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.h	(revision 14051)
@@ -28,5 +28,5 @@
 	double       *predictions;
 	double       *error;
-	double       *percent;
+	int          *numdone;
 	double        power;//for idw
 }KrigingxThreadStruct;
