Index: ../trunk-jpl/src/c/matlab/io/WriteMatlabData.cpp
===================================================================
--- ../trunk-jpl/src/c/matlab/io/WriteMatlabData.cpp	(revision 13694)
+++ ../trunk-jpl/src/c/matlab/io/WriteMatlabData.cpp	(revision 13695)
@@ -327,8 +327,8 @@
 		SetStructureFieldi(dataref,i,"pairs"            ,riftstruct->riftsnumpairs[i]       ,2,riftstruct->riftspairs[i]);
 		SetStructureFieldi(dataref,i,"tips"             ,1                                  ,2,&riftstruct->riftstips[2*i]);
 		SetStructureFieldi(dataref,i,"penaltypairs"     ,riftstruct->riftsnumpenaltypairs[i],7,riftstruct->riftspenaltypairs[i]);
+		SetStructureFieldi(dataref,i,"fill"             ,IceEnum);
 		SetStructureFieldi(dataref,i,"friction"         ,0);
-		SetStructureFieldi(dataref,i,"fill"             ,IceEnum);
 		SetStructureFieldi(dataref,i,"fraction"         ,0.);
 		SetStructureFieldi(dataref,i,"fractionincrement",0.1);
 		SetStructureFieldi(dataref,i,"state"            ,riftstruct->riftsnumpenaltypairs[i],1,riftstruct->state[i]);
Index: ../trunk-jpl/src/c/python/io/WritePythonData.cpp
===================================================================
--- ../trunk-jpl/src/c/python/io/WritePythonData.cpp	(revision 13694)
+++ ../trunk-jpl/src/c/python/io/WritePythonData.cpp	(revision 13695)
@@ -19,12 +19,13 @@
 #include "../../io/io.h"
 #include "../../EnumDefinitions/EnumDefinitions.h"
 PyObject* PyArrayFromCopiedData(int dims[2],double* data);
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,double* data);
 
 /*Primitive data types*/
 /*FUNCTION WriteData(PyObject* py_tuple,int index,int integer){{{*/
 void WriteData(PyObject* py_tuple, int index, int integer){
 
-	PyTuple_SetItem(py_tuple, index, PyInt_FromSsize_t(integer));
+	PyTuple_SetItem(py_tuple, index, PyInt_FromSsize_t((Py_ssize_t)integer));
 
 }/*}}}*/
 /*FUNCTION WriteData(PyObject* py_tuple,int index,char* string){{{*/
@@ -135,7 +136,32 @@
 /*FUNCTION WriteData(PyObject* py_tuple,int index,RiftStruct* riftstruct){{{*/
 void WriteData(PyObject* py_tuple,int index,RiftStruct* riftstruct){
 
-	_error_("not implemented yet... good luck John!");
+//	_error_("not implemented yet... good luck John!");
+
+	int i;
+	PyObject* list=NULL;
+	PyObject** dict=NULL;
+
+	list=PyList_New((Py_ssize_t)0);
+
+	for (i=0; i<riftstruct->numrifts; i++) {
+		dict[i]=PyDict_New();
+
+		PyDict_SetItemString(dict[i],"numsegs"          ,PyInt_FromSsize_t((Py_ssize_t)riftstruct->riftsnumsegments[i]));
+		PyDict_SetItemString(dict[i],"segments"         ,PyArrayFromCopiedData(riftstruct->riftsnumsegments[i]    ,3,riftstruct->riftssegments[i]));
+		PyDict_SetItemString(dict[i],"pairs"            ,PyArrayFromCopiedData(riftstruct->riftsnumpairs[i]       ,2,riftstruct->riftspairs[i]));
+		PyDict_SetItemString(dict[i],"tips"             ,PyArrayFromCopiedData(1                                  ,2,&riftstruct->riftstips[2*i]));
+		PyDict_SetItemString(dict[i],"penaltypairs"     ,PyArrayFromCopiedData(riftstruct->riftsnumpenaltypairs[i],7,riftstruct->riftspenaltypairs[i]));
+		PyDict_SetItemString(dict[i],"fill"             ,PyInt_FromSsize_t((Py_ssize_t)IceEnum));
+		PyDict_SetItemString(dict[i],"friction"         ,PyInt_FromSsize_t((Py_ssize_t)0));
+		PyDict_SetItemString(dict[i],"fraction"         ,PyFloat_FromDouble(0.));
+		PyDict_SetItemString(dict[i],"fractionincrement",PyFloat_FromDouble(0.1));
+		PyDict_SetItemString(dict[i],"state"            ,PyArrayFromCopiedData(riftstruct->riftsnumpenaltypairs[i],1,riftstruct->state[i]));
+
+		PyList_Append(list, dict[i]);
+	}
+
+	PyTuple_SetItem(py_tuple, index, list);
 }
 /*}}}*/
 
@@ -156,3 +182,19 @@
 	return PyArray_SimpleNewFromData(2,pydims,NPY_DOUBLE,pydata);
 }
 /*}}}*/
+/*FUNCTION PyArrayFromCopiedData(int dimi,int dimj,double* data){{{*/
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,double* data){
+
+	double* pydata;
+	npy_intp pydims[2]={0,0};
+
+	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
+		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
+
+	pydims[0]=(npy_intp)dimi;
+	pydims[1]=(npy_intp)dimj;
+	pydata=xNew<IssmDouble>(dimi*dimj);
+	memcpy(pydata,data,dimi*dimj*sizeof(double));
+	return PyArray_SimpleNewFromData(2,pydims,NPY_DOUBLE,pydata);
+}
+/*}}}*/
