Index: /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 12231)
+++ /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 12232)
@@ -64,8 +64,11 @@
 		gate.variogram    = variogram;
 		gate.observations = observations;
-		gate.predictions     = predictions;
+		gate.predictions  = predictions;
+		gate.percent      = (double*)xcalloc(num,sizeof(double));
 
 		/*launch the thread manager with Krigingxt as a core: */
 		LaunchThread(Krigingxt,(void*)&gate,num);
+		printf("\r      interpolation progress:  100.00%%\n");
+		xfree((void**)&gate.percent);
 	}
 	else{
@@ -104,8 +107,9 @@
 	Observations *observations = gate->observations;
 	double       *predictions  = gate->predictions;
+	double       *percent      = gate->percent;
 
 	/*Intermediaries*/
 	int           i,j,n_obs;
-	double        numerator,denominator,ratio;
+	double        numerator,denominator,ratio,localpercent;
 	double       *x            = NULL;
 	double       *y            = NULL;
@@ -119,8 +123,12 @@
 
 	/*partition loop across threads: */
-	if(my_thread==0) printf("      interpolation progress:  %5.2lf %%",0.0);
 	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
 	for(int idx=i0;idx<i1;idx++){
-		if(my_thread==0 && idx%10==0) printf("\b\b\b\b\b\b\b%5.2lf %%",double(idx-i0)/double(i1-i0)*100);
+
+		/*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]);
+		printf("\r      interpolation progress: %5.2lf%%",localpercent);
 
 		/*Get list of observations for current point*/
@@ -128,7 +136,7 @@
 
 		/*Allocate intermediary matrix and vectors*/
-		Gamma       =(double*)xmalloc(n_obs*n_obs*sizeof(double));
-		gamma0      =(double*)xmalloc(n_obs*sizeof(double));
-		ones        =(double*)xmalloc(n_obs*sizeof(double));
+		Gamma  = (double*)xmalloc(n_obs*n_obs*sizeof(double));
+		gamma0 = (double*)xmalloc(n_obs*sizeof(double));
+		ones   = (double*)xmalloc(n_obs*sizeof(double));
 
 		/*First: Create semivariogram matrix for observations*/
@@ -169,5 +177,4 @@
 		xfree((void**)&GinvZ);
 	}
-	if(my_thread==0) printf("\b\b\b\b\b\b\b\b%5.2lf %%\n",100.0);
 
 	return NULL;
Index: /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.h	(revision 12231)
+++ /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.h	(revision 12232)
@@ -25,4 +25,5 @@
 	Observations *observations;
 	double       *predictions;
+	double       *percent;
 }KrigingxThreadStruct;
 
