Index: /issm/trunk/src/c/io/SerialFetchData.cpp
===================================================================
--- /issm/trunk/src/c/io/SerialFetchData.cpp	(revision 213)
+++ /issm/trunk/src/c/io/SerialFetchData.cpp	(revision 214)
@@ -67,5 +67,5 @@
 	}
 	else if (strcmp(data_type,"Matrix")==0){
-		if(mxIsEmpty(mxdata)){
+		if(mxIsEmpty(mxdata) ){
 			/*Nothing to pick up. Just initialize matrix pointer to NULL: */
 			outmatrix_rows=0;
@@ -76,14 +76,24 @@
 		else if (mxIsDouble(mxdata) ){
 
-			/*Look at the sub_type: do we want a double* matrix (Mat) or a petsc matrix (PM)?*/
-			if (sub_data_type && strcmp(sub_data_type,"Mat")==0){
-				/*Convert matlab matrix to double* matrix: */
-				MatlabMatrixToDoubleMatrix(&outmatrix,&outmatrix_rows,&outmatrix_cols,mxdata);
+			/*Check mxdata is not pointing to NaN: */
+			if (mxIsNaN(*(mxGetPr(mxdata)))){
+				outmatrix_rows=0;
+				outmatrix_cols=0;
+				outmatrix=NULL;
 				petsc=0;
 			}
 			else{
-				/*Convert matlab matrix to petsc matrix: */
-				MatlabMatrixToPetscMatrix(&outpetscmatrix,&outmatrix_rows,&outmatrix_cols,mxdata);
-				petsc=1;
+
+				/*Look at the sub_type: do we want a double* matrix (Mat) or a petsc matrix (PM)?*/
+				if (sub_data_type && strcmp(sub_data_type,"Mat")==0){
+					/*Convert matlab matrix to double* matrix: */
+					MatlabMatrixToDoubleMatrix(&outmatrix,&outmatrix_rows,&outmatrix_cols,mxdata);
+					petsc=0;
+				}
+				else{
+					/*Convert matlab matrix to petsc matrix: */
+					MatlabMatrixToPetscMatrix(&outpetscmatrix,&outmatrix_rows,&outmatrix_cols,mxdata);
+					petsc=1;
+				}
 			}
 		}
