Index: /issm/trunk/src/c/include/macros.h
===================================================================
--- /issm/trunk/src/c/include/macros.h	(revision 4200)
+++ /issm/trunk/src/c/include/macros.h	(revision 4201)
@@ -3,4 +3,5 @@
  */
 
+/*Header {{{1*/
 #ifndef _MACROS_H_
 #define _MACROS_H_
@@ -13,7 +14,12 @@
 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
 #endif
+/*}}}*/
 
-/*Printing macro: */
+/*Printing macro: call MPI_Barrier in debugging mode so that prints are synchronized*/
+#ifdef _ISSM_DEBUG_ 
 #define _printf_(...) PrintfFunction(__VA_ARGS__)
+#else
+#define _printf_(...) MPI_Barrier(MPI_COMM_WORLD); PrintfFunction(__VA_ARGS__)
+#endif
 
 /*Error exception macro*/
Index: /issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp
===================================================================
--- /issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp	(revision 4200)
+++ /issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp	(revision 4201)
@@ -64,15 +64,21 @@
 void DoubleMatExternalResult::DeepEcho(void){
 
-	int i;
+	int i,j;
 	
 	printf("DoubleMatExternalResult:\n");
 	printf("   id: %i\n",this->id);
 	printf("   enum: %i (%s)\n",this->enum_type,EnumAsString(this->enum_type));
-	printf("   matrix size: %i-%i\n",this->M,this->N);
-	for(i=0;i<this->M;i++){
-		printf("%i %g\n",i,this->values[i]);
-	}
 	printf("   step: %i\n",this->step);
 	printf("   time: %g\n",this->time);
+	printf("   matrix size: %i-%i\n",this->M,this->N);
+	for (i=0;i<this->M;i++){  
+		printf("   [ ");
+		for (j=0;j<this->N;j++){
+			printf(" %12.6g ",this->values[i*this->N+j]);
+		}  
+		printf(" ]\n");
+	}  
+	printf("\n");
+
 }
 /*}}}*/
@@ -109,7 +115,7 @@
 	printf("DoubleMatExternalResult:\n");
 	printf("   enum: %i (%s)\n",this->enum_type,EnumAsString(this->enum_type));
-	printf("   matrix size: %i-%i\n",this->M,this->N);
 	printf("   step: %i\n",this->step);
 	printf("   time: %g\n",this->time);
+	printf("   matrix size: %i-%i\n",this->M,this->N);
 
 }
@@ -178,10 +184,10 @@
 	int     length;
 	int     type;
-	int     size;
+	int     rows,cols;
 	char   *name    = NULL;
 	extern  int my_rank;
 
 	/*return if now on cpu 0: */
-	if(my_rank)return;
+	if(my_rank) return;
 
 	/*First write enum: */
@@ -197,8 +203,10 @@
 	/*writing a double array, type is 3:*/
 	type=3;
-	size=this->M*this->N;
 	fwrite(&type,sizeof(int),1,fid);
-	fwrite(&size,sizeof(int),1,fid);
-	fwrite(this->values,size*sizeof(double),1,fid);
+	rows=this->M;
+	fwrite(&rows,sizeof(int),1,fid);
+	cols=this->N;
+	fwrite(&cols,sizeof(int),1,fid);
+	fwrite(this->values,cols*rows*sizeof(double),1,fid);
 
 }
Index: /issm/trunk/src/c/shared/Elements/elements.h
===================================================================
--- /issm/trunk/src/c/shared/Elements/elements.h	(revision 4200)
+++ /issm/trunk/src/c/shared/Elements/elements.h	(revision 4201)
@@ -18,5 +18,5 @@
 		printf("   [ ");
 		for (j=0;j<cols;j++){
-			printf(" %10.10g ",array[i*cols+j]);
+			printf(" %12.6g ",array[i*cols+j]);
 		}  
 		printf(" ]\n");
@@ -30,5 +30,5 @@
 		printf("   [ ");
 		for (j=0;j<cols;j++){
-			printf(" %i",array[i*cols+j]);
+			printf(" %6i",array[i*cols+j]);
 		}  
 		printf(" ]\n");
