Index: /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 14236)
+++ /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.cpp	(revision 14237)
@@ -59,5 +59,20 @@
 	}
 	else if(strcmp(output,"distance")==0){
-		observations->Distances(predictions,x_interp,y_interp,n_interp,radius);
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(Distancest,(void*)&gate,num);
+		xDelete<int>(gate.numdone);
 	}
 	else if(strcmp(output,"delaunay")==0){
@@ -363,4 +378,38 @@
 	return NULL;
 }/*}}}*/
+/*FUNCTION Distancest{{{*/
+void* Distancest(void* vpthread_handle){
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	observations->Distances(&predictions[i0],&x_interp[i0],&y_interp[i0],i1-i0,radius);
+	return NULL;
+}/*}}}*/
 
 void ProcessVariogram(Variogram **pvariogram,Options* options){/*{{{*/
Index: /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.h	(revision 14236)
+++ /issm/trunk-jpl/src/c/modules/Krigingx/Krigingx.h	(revision 14237)
@@ -36,3 +36,4 @@
 void* idwt(void*);
 void* v4t(void*);
+void* Distancest(void*);
 #endif /* _KRIGINGX_H */
