Index: /issm/trunk-jpl/src/c/classes/IoModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/IoModel.cpp	(revision 16390)
+++ /issm/trunk-jpl/src/c/classes/IoModel.cpp	(revision 16391)
@@ -1109,17 +1109,15 @@
 		strings=xNew<char*>(num_instances);
 
-
 		for(i=0;i<num_instances;i++){
 
-			fsetpos(fid,file_positions+i);
-
-			/*check we are indeed finding a string, not something else: */
-			if(codes[i]!=4)_error_("expecting a string for enum " << EnumToStringx(data_enum));
-
-			/*We have to read a string from disk. First read the dimensions of the string, then the string: */
-			if(my_rank==0){  
+
+			if(my_rank==0){
+				/*check we are indeed finding a string, not something else: */
+				if(codes[i]!=4)_error_("expecting a string for enum " << EnumToStringx(data_enum));
+		
+				/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+				fsetpos(fid,file_positions+i);
 				if(fread(&string_size,sizeof(int),1,fid)!=1) _error_("could not read length of string ");
 			}
-
 
 			ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
@@ -1131,5 +1129,5 @@
 
 				/*Read string on node 0, then broadcast: */
-				if(my_rank==0){  
+				if(my_rank==0){
 					if(fread(string,string_size*sizeof(char),1,fid)!=1)_error_(" could not read string ");
 				}
@@ -1188,12 +1186,12 @@
 		for(i=0;i<num_instances;i++){
 
-			fsetpos(fid,file_positions+i);
-			code=codes[i];
-
-			if((code!=5) && (code!=6) && (code!=7))_error_("expecting a IssmDouble, integer or boolean matrix for enum " << EnumToStringx(data_enum));
-			
-			/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
-			/*numberofelements: */
-			if(my_rank==0){  
+			if(my_rank==0){
+				code=codes[i];
+
+				if((code!=5) && (code!=6) && (code!=7))_error_("expecting a IssmDouble, integer or boolean matrix for enum " << EnumToStringx(data_enum));
+
+				/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+				/*numberofelements: */
+				fsetpos(fid,file_positions+i);
 				if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
 			}
@@ -1542,6 +1540,4 @@
 	/*Broadcast data: */
 	ISSM_MPI_Bcast(&num_instances,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
-	ISSM_MPI_Bcast(codes,num_instances,ISSM_MPI_INT,0,IssmComm::GetComm()); 
-	ISSM_MPI_Bcast(vector_types,num_instances,ISSM_MPI_INT,0,IssmComm::GetComm()); 
 
 	/*Assign output pointers:*/
