[Scipy-svn] r6866 - in trunk/scipy/io/matlab: . tests

scipy-svn at scipy.org scipy-svn at scipy.org
Thu Nov 11 19:56:41 EST 2010


Author: matthew.brett at gmail.com
Date: 2010-11-11 18:56:41 -0600 (Thu, 11 Nov 2010)
New Revision: 6866

Modified:
   trunk/scipy/io/matlab/mio5.py
   trunk/scipy/io/matlab/mio5_utils.c
   trunk/scipy/io/matlab/mio5_utils.pyx
   trunk/scipy/io/matlab/tests/test_mio.py
   trunk/scipy/io/matlab/tests/test_pathological.py
Log:
NF - duplicate fieldnames as hidden feature, with tests

Modified: trunk/scipy/io/matlab/mio5.py
===================================================================
--- trunk/scipy/io/matlab/mio5.py	2010-11-12 00:56:28 UTC (rev 6865)
+++ trunk/scipy/io/matlab/mio5.py	2010-11-12 00:56:41 UTC (rev 6866)
@@ -270,6 +270,12 @@
         while not self.end_of_stream():
             hdr, next_position = self.read_var_header()
             name = asstr(hdr.name)
+            if name in mdict:
+                warnings.warn('Duplicate variable name "%s" in stream'
+                              ' - replacing previous with new\n'
+                              'Consider mio5.varmats_from_mat to split '
+                              'file into single variable files' % name,
+                              UserWarning, stacklevel=2)
             if name == '':
                 # can only be a matlab 7 function workspace
                 name = '__function_workspace__'

Modified: trunk/scipy/io/matlab/mio5_utils.c
===================================================================
--- trunk/scipy/io/matlab/mio5_utils.c	2010-11-12 00:56:28 UTC (rev 6865)
+++ trunk/scipy/io/matlab/mio5_utils.c	2010-11-12 00:56:41 UTC (rev 6866)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.13 on Sat Sep 11 22:32:56 2010 */
+/* Generated by Cython 0.13 on Mon Oct 11 20:27:08 2010 */
 
 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
@@ -196,9 +196,10 @@
 #endif
 #include <math.h>
 #define __PYX_HAVE_API__scipy__io__matlab__mio5_utils
+#include "stdlib.h"
+#include "string.h"
 #include "stdio.h"
 #include "pythread.h"
-#include "stdlib.h"
 #include "numpy/arrayobject.h"
 #include "numpy/ufuncobject.h"
 #include "numpy_rephrasing.h"
@@ -372,7 +373,7 @@
 
 typedef npy_cdouble __pyx_t_5numpy_complex_t;
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/streams.pxd":6
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/streams.pxd":6
  *     cdef object fobj
  * 
  *     cpdef int seek(self, long int offset, int whence=*) except -1             # <<<<<<<<<<<<<<
@@ -385,7 +386,7 @@
   int whence;
 };
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/streams.pxd":9
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/streams.pxd":9
  *     cpdef long int tell(self) except -1
  *     cdef int read_into(self, void *buf, size_t n) except -1
  *     cdef object read_string(self, size_t n, void **pp, int copy=*)             # <<<<<<<<<<<<<<
@@ -398,7 +399,7 @@
   int copy;
 };
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":65
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":68
  * 
  * 
  * cdef enum:             # <<<<<<<<<<<<<<
@@ -424,7 +425,7 @@
   __pyx_e_5scipy_2io_6matlab_10mio5_utils_miUTF32 = 18
 };
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":82
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":85
  *     miUTF32 = 18
  * 
  * cdef enum: # see comments in mio5_params             # <<<<<<<<<<<<<<
@@ -453,7 +454,7 @@
   __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxOBJECT_CLASS_FROM_MATRIX_H = 18
 };
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":289
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":316
  *         return 1
  * 
  *     cdef object read_element(self,             # <<<<<<<<<<<<<<
@@ -466,7 +467,7 @@
   int copy;
 };
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":385
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":412
  *         return 0
  * 
  *     cpdef inline cnp.ndarray read_numeric(self, int copy=True):             # <<<<<<<<<<<<<<
@@ -479,7 +480,7 @@
   int copy;
 };
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":564
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":592
  *         return size
  * 
  *     cdef read_mi_matrix(self, int process=1):             # <<<<<<<<<<<<<<
@@ -492,7 +493,7 @@
   int process;
 };
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":596
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":624
  *         return self.array_from_header(header, process)
  * 
  *     cpdef array_from_header(self, VarHeader5 header, int process=1):             # <<<<<<<<<<<<<<
@@ -505,7 +506,7 @@
   int process;
 };
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/streams.pxd":3
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/streams.pxd":3
  * # -*- python -*- or rather like
  * 
  * cdef class GenericStream:             # <<<<<<<<<<<<<<
@@ -519,7 +520,7 @@
   PyObject *fobj;
 };
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":116
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":119
  * 
  * 
  * cdef class VarHeader5:             # <<<<<<<<<<<<<<
@@ -540,7 +541,7 @@
   size_t nzmax;
 };
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":128
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":141
  * 
  * 
  * cdef class VarReader5:             # <<<<<<<<<<<<<<
@@ -559,7 +560,6 @@
   struct __pyx_obj_5scipy_2io_6matlab_7streams_GenericStream *cstream;
   PyObject *dtypes[20];
   PyObject *class_dtypes[20];
-  PyObject *preader;
   PyArray_Descr *U1_dtype;
   PyArray_Descr *bool_dtype;
   int mat_dtype;
@@ -568,7 +568,7 @@
 };
 
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/streams.pxd":3
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/streams.pxd":3
  * # -*- python -*- or rather like
  * 
  * cdef class GenericStream:             # <<<<<<<<<<<<<<
@@ -585,7 +585,7 @@
 static struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *__pyx_vtabptr_5scipy_2io_6matlab_7streams_GenericStream;
 
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":128
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":141
  * 
  * 
  * cdef class VarReader5:             # <<<<<<<<<<<<<<
@@ -836,6 +836,8 @@
 
 static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_uint32(npy_uint32);
 
+static CYTHON_INLINE npy_int32 __Pyx_PyInt_from_py_npy_int32(PyObject *);
+
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
 
 static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_int32(npy_int32);
@@ -968,6 +970,10 @@
 static void __Pyx_AddTraceback(const char *funcname); /*proto*/
 
 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+/* Module declarations from libc.stdlib */
+
+/* Module declarations from libc.string */
+
 /* Module declarations from cpython.version */
 
 /* Module declarations from cpython.ref */
@@ -1041,8 +1047,6 @@
 
 /* Module declarations from cpython */
 
-/* Module declarations from libc.stdlib */
-
 /* Module declarations from numpy */
 
 /* Module declarations from numpy */
@@ -1075,48 +1079,53 @@
 int __pyx_module_is_main_scipy__io__matlab__mio5_utils = 0;
 
 /* Implementation of scipy.io.matlab.mio5_utils */
+static PyObject *__pyx_builtin_enumerate;
 static PyObject *__pyx_builtin_ValueError;
 static PyObject *__pyx_builtin_TypeError;
 static PyObject *__pyx_builtin_range;
 static PyObject *__pyx_builtin_object;
 static PyObject *__pyx_builtin_RuntimeError;
-static char __pyx_k_1[] = "<U1";
-static char __pyx_k_2[] = ">U1";
-static char __pyx_k_3[] = "Error in SDE format data";
-static char __pyx_k_4[] = "Expecting miINT8 as data type";
-static char __pyx_k_5[] = "Expecting miINT32 as data type";
-static char __pyx_k_6[] = "Too many dimensions (%d) for numpy arrays";
-static char __pyx_k_7[] = "Expecting matrix here";
-static char __pyx_k_8[] = "Do not support encoding %d";
-static char __pyx_k_9[] = "Type %d does not appear to be char type";
-static char __pyx_k_10[] = "Only one value for namelength";
-static char __pyx_k_11[] = "ndarray is not C contiguous";
-static char __pyx_k_12[] = "ndarray is not Fortran contiguous";
-static char __pyx_k_13[] = "Non-native byte order not supported";
-static char __pyx_k_14[] = "unknown dtype code in numpy.pxd (%d)";
-static char __pyx_k_15[] = "Format string allocated too short, see comment in numpy.pxd";
-static char __pyx_k_16[] = "Format string allocated too short.";
-static char __pyx_k_17[] = " Cython mio5 utility routines (-*- python -*- like)\n\n";
-static char __pyx_k_18[] = "numpy.compat";
-static char __pyx_k_19[] = "scipy.io.matlab.miobase";
-static char __pyx_k_20[] = "*";
-static char __pyx_k_21[] = "scipy.io.matlab.mio_utils";
-static char __pyx_k_22[] = "scipy.io.matlab.mio5_params";
-static char __pyx_k_23[] = "scipy.sparse";
-static char __pyx_k_24[] = "<";
-static char __pyx_k_25[] = ">";
-static char __pyx_k_26[] = "VarReader5.set_stream (line 186)";
-static char __pyx_k_27[] = "VarReader5.read_tag (line 193)";
-static char __pyx_k_28[] = "VarReader5.read_numeric (line 385)";
-static char __pyx_k_29[] = "VarReader5.read_full_tag (line 461)";
-static char __pyx_k_30[] = "VarReader5.read_header (line 495)";
-static char __pyx_k_31[] = "VarReader5.array_from_header (line 596)";
-static char __pyx_k_32[] = "VarReader5.read_real_complex (line 662)";
-static char __pyx_k_33[] = "VarReader5.read_char (line 709)";
-static char __pyx_k_34[] = "VarReader5.read_cells (line 770)";
-static char __pyx_k_35[] = "VarReader5.read_fieldnames (line 783)";
-static char __pyx_k_36[] = "VarReader5.read_struct (line 811)";
-static char __pyx_k_37[] = "VarReader5.read_opaque (line 851)";
+static char __pyx_k_1[] = "  ";
+static char __pyx_k_2[] = " ";
+static char __pyx_k_3[] = "<U1";
+static char __pyx_k_4[] = ">U1";
+static char __pyx_k_5[] = "Error in SDE format data";
+static char __pyx_k_6[] = "Expecting miINT8 as data type";
+static char __pyx_k_7[] = "Expecting miINT32 as data type";
+static char __pyx_k_8[] = "Too many dimensions (%d) for numpy arrays";
+static char __pyx_k_9[] = "Expecting matrix here";
+static char __pyx_k_10[] = "Do not support encoding %d";
+static char __pyx_k_11[] = "Type %d does not appear to be char type";
+static char __pyx_k_12[] = "Only one value for namelength";
+static char __pyx_k_13[] = "_%d_%s";
+static char __pyx_k_14[] = "ndarray is not C contiguous";
+static char __pyx_k_15[] = "ndarray is not Fortran contiguous";
+static char __pyx_k_16[] = "Non-native byte order not supported";
+static char __pyx_k_17[] = "unknown dtype code in numpy.pxd (%d)";
+static char __pyx_k_18[] = "Format string allocated too short, see comment in numpy.pxd";
+static char __pyx_k_19[] = "Format string allocated too short.";
+static char __pyx_k_20[] = " Cython mio5 utility routines (-*- python -*- like)\n\n";
+static char __pyx_k_21[] = "numpy.compat";
+static char __pyx_k_22[] = "scipy.io.matlab.miobase";
+static char __pyx_k_23[] = "*";
+static char __pyx_k_24[] = "scipy.io.matlab.mio_utils";
+static char __pyx_k_25[] = "scipy.io.matlab.mio5_params";
+static char __pyx_k_26[] = "scipy.sparse";
+static char __pyx_k_27[] = "<";
+static char __pyx_k_28[] = ">";
+static char __pyx_k_29[] = "VarHeader5.set_dims (line 130)";
+static char __pyx_k_30[] = "VarReader5.set_stream (line 213)";
+static char __pyx_k_31[] = "VarReader5.read_tag (line 220)";
+static char __pyx_k_32[] = "VarReader5.read_numeric (line 412)";
+static char __pyx_k_33[] = "VarReader5.read_full_tag (line 488)";
+static char __pyx_k_34[] = "VarReader5.read_header (line 522)";
+static char __pyx_k_35[] = "VarReader5.array_from_header (line 624)";
+static char __pyx_k_36[] = "VarReader5.read_real_complex (line 690)";
+static char __pyx_k_37[] = "VarReader5.read_char (line 737)";
+static char __pyx_k_38[] = "VarReader5.read_cells (line 806)";
+static char __pyx_k_39[] = "VarReader5.read_fieldnames (line 819)";
+static char __pyx_k_40[] = "VarReader5.read_struct (line 867)";
+static char __pyx_k_41[] = "VarReader5.read_opaque (line 907)";
 static char __pyx_k__B[] = "B";
 static char __pyx_k__F[] = "F";
 static char __pyx_k__H[] = "H";
@@ -1174,6 +1183,7 @@
 static char __pyx_k__codecs[] = "codecs";
 static char __pyx_k__decode[] = "decode";
 static char __pyx_k__dtypes[] = "dtypes";
+static char __pyx_k__encode[] = "encode";
 static char __pyx_k__fields[] = "fields";
 static char __pyx_k__format[] = "format";
 static char __pyx_k__header[] = "header";
@@ -1183,7 +1193,9 @@
 static char __pyx_k__object[] = "object";
 static char __pyx_k__pycopy[] = "pycopy";
 static char __pyx_k__sparse[] = "sparse";
+static char __pyx_k__MDTYPES[] = "MDTYPES";
 static char __pyx_k__asbytes[] = "asbytes";
+static char __pyx_k__classes[] = "classes";
 static char __pyx_k__cstream[] = "cstream";
 static char __pyx_k__ndarray[] = "ndarray";
 static char __pyx_k__preader[] = "preader";
@@ -1198,17 +1210,20 @@
 static char __pyx_k__itemsize[] = "itemsize";
 static char __pyx_k__read_tag[] = "read_tag";
 static char __pyx_k__readonly[] = "readonly";
+static char __pyx_k__set_dims[] = "set_dims";
 static char __pyx_k__tostring[] = "tostring";
 static char __pyx_k__type_num[] = "type_num";
 static char __pyx_k__TypeError[] = "TypeError";
 static char __pyx_k__byteorder[] = "byteorder";
 static char __pyx_k__cread_tag[] = "cread_tag";
+static char __pyx_k__enumerate[] = "enumerate";
 static char __pyx_k__is_global[] = "is_global";
 static char __pyx_k__mat_dtype[] = "mat_dtype";
 static char __pyx_k__read_char[] = "read_char";
 static char __pyx_k__read_into[] = "read_into";
 static char __pyx_k__sys_is_le[] = "sys_is_le";
 static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__VarHeader5[] = "VarHeader5";
 static char __pyx_k__VarReader5[] = "VarReader5";
 static char __pyx_k__bool_dtype[] = "bool_dtype";
 static char __pyx_k__byte_order[] = "byte_order";
@@ -1258,24 +1273,24 @@
 static char __pyx_k__read_real_complex[] = "read_real_complex";
 static PyObject *__pyx_kp_s_1;
 static PyObject *__pyx_kp_s_10;
-static PyObject *__pyx_kp_u_11;
-static PyObject *__pyx_kp_u_12;
-static PyObject *__pyx_kp_u_13;
+static PyObject *__pyx_kp_s_11;
+static PyObject *__pyx_kp_s_12;
+static PyObject *__pyx_kp_s_13;
 static PyObject *__pyx_kp_u_14;
 static PyObject *__pyx_kp_u_15;
 static PyObject *__pyx_kp_u_16;
-static PyObject *__pyx_n_s_18;
-static PyObject *__pyx_n_s_19;
+static PyObject *__pyx_kp_u_17;
+static PyObject *__pyx_kp_u_18;
+static PyObject *__pyx_kp_u_19;
 static PyObject *__pyx_kp_s_2;
-static PyObject *__pyx_n_s_20;
 static PyObject *__pyx_n_s_21;
 static PyObject *__pyx_n_s_22;
 static PyObject *__pyx_n_s_23;
-static PyObject *__pyx_kp_s_24;
-static PyObject *__pyx_kp_s_25;
-static PyObject *__pyx_kp_u_26;
-static PyObject *__pyx_kp_u_27;
-static PyObject *__pyx_kp_u_28;
+static PyObject *__pyx_n_s_24;
+static PyObject *__pyx_n_s_25;
+static PyObject *__pyx_n_s_26;
+static PyObject *__pyx_kp_s_27;
+static PyObject *__pyx_kp_s_28;
 static PyObject *__pyx_kp_u_29;
 static PyObject *__pyx_kp_s_3;
 static PyObject *__pyx_kp_u_30;
@@ -1286,13 +1301,18 @@
 static PyObject *__pyx_kp_u_35;
 static PyObject *__pyx_kp_u_36;
 static PyObject *__pyx_kp_u_37;
+static PyObject *__pyx_kp_u_38;
+static PyObject *__pyx_kp_u_39;
 static PyObject *__pyx_kp_s_4;
+static PyObject *__pyx_kp_u_40;
+static PyObject *__pyx_kp_u_41;
 static PyObject *__pyx_kp_s_5;
 static PyObject *__pyx_kp_s_6;
 static PyObject *__pyx_kp_s_7;
 static PyObject *__pyx_kp_s_8;
 static PyObject *__pyx_kp_s_9;
 static PyObject *__pyx_n_s__F;
+static PyObject *__pyx_n_s__MDTYPES;
 static PyObject *__pyx_n_s__MatlabFunction;
 static PyObject *__pyx_n_s__MatlabObject;
 static PyObject *__pyx_n_s__MatlabOpaque;
@@ -1303,6 +1323,7 @@
 static PyObject *__pyx_n_s__U;
 static PyObject *__pyx_n_s__U1_dtype;
 static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s__VarHeader5;
 static PyObject *__pyx_n_s__VarReader5;
 static PyObject *__pyx_n_s____dict__;
 static PyObject *__pyx_n_s____main__;
@@ -1325,6 +1346,7 @@
 static PyObject *__pyx_n_s__chars_as_strings;
 static PyObject *__pyx_n_s__chars_to_strings;
 static PyObject *__pyx_n_s__class_dtypes;
+static PyObject *__pyx_n_s__classes;
 static PyObject *__pyx_n_s__codecs;
 static PyObject *__pyx_n_s__copy;
 static PyObject *__pyx_n_s__cread_fieldnames;
@@ -1339,6 +1361,8 @@
 static PyObject *__pyx_n_s__dtype;
 static PyObject *__pyx_n_s__dtypes;
 static PyObject *__pyx_n_s__empty;
+static PyObject *__pyx_n_s__encode;
+static PyObject *__pyx_n_s__enumerate;
 static PyObject *__pyx_n_s__fields;
 static PyObject *__pyx_n_s__format;
 static PyObject *__pyx_n_s__header;
@@ -1397,6 +1421,7 @@
 static PyObject *__pyx_n_s__s2;
 static PyObject *__pyx_n_s__scipy;
 static PyObject *__pyx_n_s__seek;
+static PyObject *__pyx_n_s__set_dims;
 static PyObject *__pyx_n_s__set_stream;
 static PyObject *__pyx_n_s__shape;
 static PyObject *__pyx_n_s__size_from_header;
@@ -1414,11 +1439,12 @@
 static PyObject *__pyx_n_s__uint16_codec;
 static PyObject *__pyx_n_s__uint16_len;
 static PyObject *__pyx_n_s__uint8;
+static PyObject *__pyx_int_0;
 static PyObject *__pyx_int_1;
 static PyObject *__pyx_int_neg_1;
 static PyObject *__pyx_int_15;
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":109
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":112
  * 
  * 
  * cpdef cnp.uint32_t byteswap_u4(cnp.uint32_t u4):             # <<<<<<<<<<<<<<
@@ -1431,7 +1457,7 @@
   __pyx_t_5numpy_uint32_t __pyx_r;
   __Pyx_RefNannySetupContext("byteswap_u4");
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":113
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":116
  *            ((u4 << 8) & 0xff0000U) |
  *            ((u4 >> 8 & 0xff00u)) |
  *            (u4 >> 24))             # <<<<<<<<<<<<<<
@@ -1447,7 +1473,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":109
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":112
  * 
  * 
  * cpdef cnp.uint32_t byteswap_u4(cnp.uint32_t u4):             # <<<<<<<<<<<<<<
@@ -1463,7 +1489,7 @@
   __Pyx_RefNannySetupContext("byteswap_u4");
   __pyx_self = __pyx_self;
   assert(__pyx_arg_u4); {
-    __pyx_v_u4 = __Pyx_PyInt_from_py_npy_uint32(__pyx_arg_u4); if (unlikely((__pyx_v_u4 == (npy_uint32)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_u4 = __Pyx_PyInt_from_py_npy_uint32(__pyx_arg_u4); if (unlikely((__pyx_v_u4 == (npy_uint32)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -1472,7 +1498,7 @@
   return NULL;
   __pyx_L4_argument_unpacking_done:;
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_to_py_npy_uint32(__pyx_f_5scipy_2io_6matlab_10mio5_utils_byteswap_u4(__pyx_v_u4, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_to_py_npy_uint32(__pyx_f_5scipy_2io_6matlab_10mio5_utils_byteswap_u4(__pyx_v_u4, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -1490,7 +1516,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":117
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":120
  * 
  * cdef class VarHeader5:
  *     cdef readonly object name             # <<<<<<<<<<<<<<
@@ -1514,7 +1540,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":118
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":121
  * cdef class VarHeader5:
  *     cdef readonly object name
  *     cdef readonly int mclass             # <<<<<<<<<<<<<<
@@ -1528,7 +1554,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__");
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyInt_FromLong(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_self)->mclass); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyInt_FromLong(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_self)->mclass); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -1546,7 +1572,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":119
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":122
  *     cdef readonly object name
  *     cdef readonly int mclass
  *     cdef readonly object dims             # <<<<<<<<<<<<<<
@@ -1570,7 +1596,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":124
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":127
  *     cdef int is_complex
  *     cdef int is_logical
  *     cdef public int is_global             # <<<<<<<<<<<<<<
@@ -1584,7 +1610,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__");
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyInt_FromLong(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_self)->is_global); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyInt_FromLong(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_self)->is_global); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -1607,7 +1633,7 @@
   int __pyx_r;
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__set__");
-  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_self)->is_global = __pyx_t_1;
 
   __pyx_r = 0;
@@ -1620,8 +1646,138 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":129
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":130
+ *     cdef size_t nzmax
  * 
+ *     def set_dims(self, dims):             # <<<<<<<<<<<<<<
+ *         """ Allow setting of dimensions from python
+ * 
+ */
+
+static PyObject *__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarHeader5_set_dims(PyObject *__pyx_v_self, PyObject *__pyx_v_dims); /*proto*/
+static char __pyx_doc_5scipy_2io_6matlab_10mio5_utils_10VarHeader5_set_dims[] = " Allow setting of dimensions from python\n\n        This is for constructing headers for tests\n        ";
+static PyObject *__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarHeader5_set_dims(PyObject *__pyx_v_self, PyObject *__pyx_v_dims) {
+  PyObject *__pyx_v_i;
+  PyObject *__pyx_v_dim;
+  PyObject *__pyx_r = NULL;
+  Py_ssize_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __pyx_t_5numpy_int32_t __pyx_t_6;
+  Py_ssize_t __pyx_t_7;
+  __Pyx_RefNannySetupContext("set_dims");
+  __pyx_v_i = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_v_dim = Py_None; __Pyx_INCREF(Py_None);
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":135
+ *         This is for constructing headers for tests
+ *         """
+ *         self.dims = dims             # <<<<<<<<<<<<<<
+ *         self.n_dims = len(dims)
+ *         for i, dim in enumerate(dims):
+ */
+  __Pyx_INCREF(__pyx_v_dims);
+  __Pyx_GIVEREF(__pyx_v_dims);
+  __Pyx_GOTREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_self)->dims);
+  __Pyx_DECREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_self)->dims);
+  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_self)->dims = __pyx_v_dims;
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":136
+ *         """
+ *         self.dims = dims
+ *         self.n_dims = len(dims)             # <<<<<<<<<<<<<<
+ *         for i, dim in enumerate(dims):
+ *             self.dims_ptr[i] = <cnp.int32_t>int(dim)
+ */
+  __pyx_t_1 = PyObject_Length(__pyx_v_dims); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_self)->n_dims = __pyx_t_1;
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":137
+ *         self.dims = dims
+ *         self.n_dims = len(dims)
+ *         for i, dim in enumerate(dims):             # <<<<<<<<<<<<<<
+ *             self.dims_ptr[i] = <cnp.int32_t>int(dim)
+ * 
+ */
+  __Pyx_INCREF(__pyx_int_0);
+  __pyx_t_2 = __pyx_int_0;
+  if (PyList_CheckExact(__pyx_v_dims) || PyTuple_CheckExact(__pyx_v_dims)) {
+    __pyx_t_1 = 0; __pyx_t_3 = __pyx_v_dims; __Pyx_INCREF(__pyx_t_3);
+  } else {
+    __pyx_t_1 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_dims); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+  }
+  for (;;) {
+    if (likely(PyList_CheckExact(__pyx_t_3))) {
+      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_3)) break;
+      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++;
+    } else if (likely(PyTuple_CheckExact(__pyx_t_3))) {
+      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
+      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++;
+    } else {
+      __pyx_t_4 = PyIter_Next(__pyx_t_3);
+      if (!__pyx_t_4) {
+        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_4);
+    }
+    __Pyx_DECREF(__pyx_v_dim);
+    __pyx_v_dim = __pyx_t_4;
+    __pyx_t_4 = 0;
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_v_i);
+    __pyx_v_i = __pyx_t_2;
+    __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2);
+    __pyx_t_2 = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":138
+ *         self.n_dims = len(dims)
+ *         for i, dim in enumerate(dims):
+ *             self.dims_ptr[i] = <cnp.int32_t>int(dim)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_INCREF(__pyx_v_dim);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_dim);
+    __Pyx_GIVEREF(__pyx_v_dim);
+    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)&PyInt_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_6 = __Pyx_PyInt_from_py_npy_int32(__pyx_t_5); if (unlikely((__pyx_t_6 == (npy_int32)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    (((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_self)->dims_ptr[__pyx_t_7]) = __pyx_t_6;
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("scipy.io.matlab.mio5_utils.VarHeader5.set_dims");
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_DECREF(__pyx_v_i);
+  __Pyx_DECREF(__pyx_v_dim);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":142
+ * 
  * cdef class VarReader5:
  *     cdef public int is_swapped, little_endian             # <<<<<<<<<<<<<<
  *     cdef int struct_as_record
@@ -1634,7 +1790,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__");
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyInt_FromLong(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->is_swapped); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyInt_FromLong(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->is_swapped); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -1657,7 +1813,7 @@
   int __pyx_r;
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__set__");
-  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->is_swapped = __pyx_t_1;
 
   __pyx_r = 0;
@@ -1676,7 +1832,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__");
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyInt_FromLong(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->little_endian); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyInt_FromLong(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->little_endian); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -1699,7 +1855,7 @@
   int __pyx_r;
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__set__");
-  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->little_endian = __pyx_t_1;
 
   __pyx_r = 0;
@@ -1712,30 +1868,32 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":149
- *         int chars_as_strings
- * 
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":172
+ *     * squeeze_me (bool)
+ *     """
  *     def __new__(self, preader):             # <<<<<<<<<<<<<<
- *         self.is_swapped = preader.byte_order == swapped_code
- *         if self.is_swapped:
+ *         byte_order = preader.byte_order
+ *         self.is_swapped = byte_order == swapped_code
  */
 
 static int __pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5___new__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5___new__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_preader = 0;
+  PyObject *__pyx_v_byte_order;
+  PyObject *__pyx_v_uint16_codec;
   PyObject *__pyx_v_key;
   PyObject *__pyx_v_dt;
   PyObject *__pyx_v_bool_dtype;
   int __pyx_r;
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_3;
   int __pyx_t_4;
-  int __pyx_t_5;
+  PyObject *__pyx_t_5 = NULL;
   Py_ssize_t __pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
-  Py_ssize_t __pyx_t_9;
+  PyObject *__pyx_t_9 = NULL;
   static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__preader,0};
   __Pyx_RefNannySetupContext("__cinit__");
   if (unlikely(__pyx_kwds)) {
@@ -1753,7 +1911,7 @@
       else goto __pyx_L5_argtuple_error;
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__new__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "__new__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_preader = values[0];
   } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
@@ -1763,270 +1921,367 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__new__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__new__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("scipy.io.matlab.mio5_utils.VarReader5.__cinit__");
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
+  __pyx_v_byte_order = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_v_uint16_codec = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_key = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_dt = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_bool_dtype = Py_None; __Pyx_INCREF(Py_None);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":150
- * 
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":173
+ *     """
  *     def __new__(self, preader):
- *         self.is_swapped = preader.byte_order == swapped_code             # <<<<<<<<<<<<<<
+ *         byte_order = preader.byte_order             # <<<<<<<<<<<<<<
+ *         self.is_swapped = byte_order == swapped_code
  *         if self.is_swapped:
+ */
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__byte_order); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_v_byte_order);
+  __pyx_v_byte_order = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":174
+ *     def __new__(self, preader):
+ *         byte_order = preader.byte_order
+ *         self.is_swapped = byte_order == swapped_code             # <<<<<<<<<<<<<<
+ *         if self.is_swapped:
  *             self.little_endian = not sys_is_le
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__byte_order); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__swapped_code); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__swapped_code); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_byte_order, __pyx_t_1, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->is_swapped = __pyx_t_4;
+  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->is_swapped = __pyx_t_3;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":151
- *     def __new__(self, preader):
- *         self.is_swapped = preader.byte_order == swapped_code
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":175
+ *         byte_order = preader.byte_order
+ *         self.is_swapped = byte_order == swapped_code
  *         if self.is_swapped:             # <<<<<<<<<<<<<<
  *             self.little_endian = not sys_is_le
  *         else:
  */
   if (((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->is_swapped) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":152
- *         self.is_swapped = preader.byte_order == swapped_code
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":176
+ *         self.is_swapped = byte_order == swapped_code
  *         if self.is_swapped:
  *             self.little_endian = not sys_is_le             # <<<<<<<<<<<<<<
  *         else:
  *             self.little_endian = sys_is_le
  */
-    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys_is_le); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->little_endian = (!__pyx_t_5);
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys_is_le); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->little_endian = (!__pyx_t_4);
     goto __pyx_L6;
   }
   /*else*/ {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":154
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":178
  *             self.little_endian = not sys_is_le
  *         else:
  *             self.little_endian = sys_is_le             # <<<<<<<<<<<<<<
  *         # option affecting reading of matlab struct arrays
  *         self.struct_as_record = preader.struct_as_record
  */
-    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys_is_le); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->little_endian = __pyx_t_4;
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys_is_le); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->little_endian = __pyx_t_3;
   }
   __pyx_L6:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":156
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":180
  *             self.little_endian = sys_is_le
  *         # option affecting reading of matlab struct arrays
  *         self.struct_as_record = preader.struct_as_record             # <<<<<<<<<<<<<<
  *         # store codecs for text matrix reading
- *         self.codecs = preader.codecs
+ *         self.codecs = mio5p.MDTYPES[byte_order]['codecs'].copy()
  */
-  __pyx_t_3 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__struct_as_record); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->struct_as_record = __pyx_t_4;
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__struct_as_record); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->struct_as_record = __pyx_t_3;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":158
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":182
  *         self.struct_as_record = preader.struct_as_record
  *         # store codecs for text matrix reading
- *         self.codecs = preader.codecs             # <<<<<<<<<<<<<<
+ *         self.codecs = mio5p.MDTYPES[byte_order]['codecs'].copy()             # <<<<<<<<<<<<<<
  *         self.uint16_codec = preader.uint16_codec
- *         # set c-optimized stream object from python file-like object
+ *         uint16_codec = self.uint16_codec
  */
-  __pyx_t_3 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__codecs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__MDTYPES); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_byte_order); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_GetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__codecs)); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__copy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->codecs);
   __Pyx_DECREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->codecs);
-  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->codecs = __pyx_t_3;
-  __pyx_t_3 = 0;
+  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->codecs = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":159
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":183
  *         # store codecs for text matrix reading
- *         self.codecs = preader.codecs
+ *         self.codecs = mio5p.MDTYPES[byte_order]['codecs'].copy()
  *         self.uint16_codec = preader.uint16_codec             # <<<<<<<<<<<<<<
- *         # set c-optimized stream object from python file-like object
- *         self.set_stream(preader.mat_stream)
+ *         uint16_codec = self.uint16_codec
+ *         # Set length of miUINT16 char encoding
  */
-  __pyx_t_3 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__uint16_codec); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__uint16_codec); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->uint16_codec);
   __Pyx_DECREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->uint16_codec);
-  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->uint16_codec = __pyx_t_3;
-  __pyx_t_3 = 0;
+  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->uint16_codec = __pyx_t_1;
+  __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":161
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":184
+ *         self.codecs = mio5p.MDTYPES[byte_order]['codecs'].copy()
  *         self.uint16_codec = preader.uint16_codec
+ *         uint16_codec = self.uint16_codec             # <<<<<<<<<<<<<<
+ *         # Set length of miUINT16 char encoding
+ *         self.codecs['uint16_len'] = len("  ".encode(uint16_codec)) \
+ */
+  __Pyx_INCREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->uint16_codec);
+  __Pyx_DECREF(__pyx_v_uint16_codec);
+  __pyx_v_uint16_codec = ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->uint16_codec;
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":186
+ *         uint16_codec = self.uint16_codec
+ *         # Set length of miUINT16 char encoding
+ *         self.codecs['uint16_len'] = len("  ".encode(uint16_codec)) \             # <<<<<<<<<<<<<<
+ *                 - len(" ".encode(uint16_codec))
+ *         self.codecs['uint16_codec'] = uint16_codec
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_1), __pyx_n_s__encode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_uint16_codec);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_uint16_codec);
+  __Pyx_GIVEREF(__pyx_v_uint16_codec);
+  __pyx_t_5 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_6 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":187
+ *         # Set length of miUINT16 char encoding
+ *         self.codecs['uint16_len'] = len("  ".encode(uint16_codec)) \
+ *                 - len(" ".encode(uint16_codec))             # <<<<<<<<<<<<<<
+ *         self.codecs['uint16_codec'] = uint16_codec
  *         # set c-optimized stream object from python file-like object
+ */
+  __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_kp_s_2), __pyx_n_s__encode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_uint16_codec);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_uint16_codec);
+  __Pyx_GIVEREF(__pyx_v_uint16_codec);
+  __pyx_t_1 = PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_7 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t((__pyx_t_6 - __pyx_t_7)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":186
+ *         uint16_codec = self.uint16_codec
+ *         # Set length of miUINT16 char encoding
+ *         self.codecs['uint16_len'] = len("  ".encode(uint16_codec)) \             # <<<<<<<<<<<<<<
+ *                 - len(" ".encode(uint16_codec))
+ *         self.codecs['uint16_codec'] = uint16_codec
+ */
+  if (PyObject_SetItem(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->codecs, ((PyObject *)__pyx_n_s__uint16_len), __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":188
+ *         self.codecs['uint16_len'] = len("  ".encode(uint16_codec)) \
+ *                 - len(" ".encode(uint16_codec))
+ *         self.codecs['uint16_codec'] = uint16_codec             # <<<<<<<<<<<<<<
+ *         # set c-optimized stream object from python file-like object
+ *         self.set_stream(preader.mat_stream)
+ */
+  if (PyObject_SetItem(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->codecs, ((PyObject *)__pyx_n_s__uint16_codec), __pyx_v_uint16_codec) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":190
+ *         self.codecs['uint16_codec'] = uint16_codec
+ *         # set c-optimized stream object from python file-like object
  *         self.set_stream(preader.mat_stream)             # <<<<<<<<<<<<<<
  *         # options for element processing
  *         self.mat_dtype = preader.mat_dtype
  */
-  __pyx_t_3 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__set_stream); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__mat_stream); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__set_stream); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__mat_stream); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":163
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":192
  *         self.set_stream(preader.mat_stream)
  *         # options for element processing
  *         self.mat_dtype = preader.mat_dtype             # <<<<<<<<<<<<<<
  *         self.chars_as_strings = preader.chars_as_strings
  *         self.squeeze_me = preader.squeeze_me
  */
-  __pyx_t_2 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__mat_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__mat_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->mat_dtype = __pyx_t_4;
+  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->mat_dtype = __pyx_t_3;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":164
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":193
  *         # options for element processing
  *         self.mat_dtype = preader.mat_dtype
  *         self.chars_as_strings = preader.chars_as_strings             # <<<<<<<<<<<<<<
  *         self.squeeze_me = preader.squeeze_me
- *         # copy refs to dtypes into object pointer array. Store preader
+ *         # copy refs to dtypes into object pointer array. We only need the
  */
-  __pyx_t_2 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__chars_as_strings); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__chars_as_strings); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->chars_as_strings = __pyx_t_4;
+  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->chars_as_strings = __pyx_t_3;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":165
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":194
  *         self.mat_dtype = preader.mat_dtype
  *         self.chars_as_strings = preader.chars_as_strings
  *         self.squeeze_me = preader.squeeze_me             # <<<<<<<<<<<<<<
- *         # copy refs to dtypes into object pointer array. Store preader
- *         # to keep preader.dtypes, class_dtypes alive. We only need the
+ *         # copy refs to dtypes into object pointer array. We only need the
+ *         # integer-keyed dtypes
  */
-  __pyx_t_2 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__squeeze_me); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__squeeze_me); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->squeeze_me = __pyx_t_4;
+  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->squeeze_me = __pyx_t_3;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":169
- *         # to keep preader.dtypes, class_dtypes alive. We only need the
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":197
+ *         # copy refs to dtypes into object pointer array. We only need the
  *         # integer-keyed dtypes
- *         self.preader = preader             # <<<<<<<<<<<<<<
- *         for key, dt in preader.dtypes.items():
+ *         for key, dt in mio5p.MDTYPES[byte_order]['dtypes'].items():             # <<<<<<<<<<<<<<
  *             if isinstance(key, str):
- */
-  __Pyx_INCREF(__pyx_v_preader);
-  __Pyx_GIVEREF(__pyx_v_preader);
-  __Pyx_GOTREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->preader);
-  __Pyx_DECREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->preader);
-  ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->preader = __pyx_v_preader;
-
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":170
- *         # integer-keyed dtypes
- *         self.preader = preader
- *         for key, dt in preader.dtypes.items():             # <<<<<<<<<<<<<<
- *             if isinstance(key, str):
  *                 continue
  */
-  __pyx_t_2 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__dtypes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__MDTYPES); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetItem(__pyx_t_5, __pyx_v_byte_order); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
-    __pyx_t_6 = 0; __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_GetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtypes)); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
+    __pyx_t_7 = 0; __pyx_t_2 = __pyx_t_5; __Pyx_INCREF(__pyx_t_2);
   } else {
-    __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
   }
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   for (;;) {
-    if (likely(PyList_CheckExact(__pyx_t_1))) {
-      if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
-      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++;
-    } else if (likely(PyTuple_CheckExact(__pyx_t_1))) {
-      if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
-      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++;
+    if (likely(PyList_CheckExact(__pyx_t_2))) {
+      if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
+      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++;
+    } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
+      if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
+      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++;
     } else {
-      __pyx_t_2 = PyIter_Next(__pyx_t_1);
-      if (!__pyx_t_2) {
-        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyIter_Next(__pyx_t_2);
+      if (!__pyx_t_5) {
+        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         break;
       }
-      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_GOTREF(__pyx_t_5);
     }
-    if (PyTuple_CheckExact(__pyx_t_2) && likely(PyTuple_GET_SIZE(__pyx_t_2) == 2)) {
-      PyObject* tuple = __pyx_t_2;
-      __pyx_t_3 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_3);
-      __pyx_t_7 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_7);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (PyTuple_CheckExact(__pyx_t_5) && likely(PyTuple_GET_SIZE(__pyx_t_5) == 2)) {
+      PyObject* tuple = __pyx_t_5;
+      __pyx_t_1 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_8 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_v_key);
-      __pyx_v_key = __pyx_t_3;
-      __pyx_t_3 = 0;
+      __pyx_v_key = __pyx_t_1;
+      __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_v_dt);
-      __pyx_v_dt = __pyx_t_7;
-      __pyx_t_7 = 0;
+      __pyx_v_dt = __pyx_t_8;
+      __pyx_t_8 = 0;
     } else {
-      __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_9);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_1 = __Pyx_UnpackItem(__pyx_t_9, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_9, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_8, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_UnpackItem(__pyx_t_8, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_EndUnpack(__pyx_t_8, 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      if (__Pyx_EndUnpack(__pyx_t_9, 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __Pyx_DECREF(__pyx_v_key);
-      __pyx_v_key = __pyx_t_3;
-      __pyx_t_3 = 0;
+      __pyx_v_key = __pyx_t_1;
+      __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_v_dt);
-      __pyx_v_dt = __pyx_t_7;
-      __pyx_t_7 = 0;
+      __pyx_v_dt = __pyx_t_8;
+      __pyx_t_8 = 0;
     }
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":171
- *         self.preader = preader
- *         for key, dt in preader.dtypes.items():
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":198
+ *         # integer-keyed dtypes
+ *         for key, dt in mio5p.MDTYPES[byte_order]['dtypes'].items():
  *             if isinstance(key, str):             # <<<<<<<<<<<<<<
  *                 continue
  *             self.dtypes[key] = <PyObject*>dt
  */
-    __pyx_t_5 = PyString_Check(__pyx_v_key); 
-    if (__pyx_t_5) {
+    __pyx_t_4 = PyString_Check(__pyx_v_key); 
+    if (__pyx_t_4) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":172
- *         for key, dt in preader.dtypes.items():
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":199
+ *         for key, dt in mio5p.MDTYPES[byte_order]['dtypes'].items():
  *             if isinstance(key, str):
  *                 continue             # <<<<<<<<<<<<<<
  *             self.dtypes[key] = <PyObject*>dt
@@ -2037,97 +2292,106 @@
     }
     __pyx_L9:;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":173
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":200
  *             if isinstance(key, str):
  *                 continue
  *             self.dtypes[key] = <PyObject*>dt             # <<<<<<<<<<<<<<
  *         # copy refs to class_dtypes into object pointer array
- *         for key, dt in preader.class_dtypes.items():
+ *         for key, dt in mio5p.MDTYPES[byte_order]['classes'].items():
  */
-    __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_key); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    (((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->dtypes[__pyx_t_9]) = ((PyObject *)__pyx_v_dt);
+    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_key); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    (((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->dtypes[__pyx_t_6]) = ((PyObject *)__pyx_v_dt);
     __pyx_L7_continue:;
   }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":175
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":202
  *             self.dtypes[key] = <PyObject*>dt
  *         # copy refs to class_dtypes into object pointer array
- *         for key, dt in preader.class_dtypes.items():             # <<<<<<<<<<<<<<
+ *         for key, dt in mio5p.MDTYPES[byte_order]['classes'].items():             # <<<<<<<<<<<<<<
  *             if isinstance(key, str):
  *                 continue
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_preader, __pyx_n_s__class_dtypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__MDTYPES); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) {
-    __pyx_t_6 = 0; __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
+  __pyx_t_2 = PyObject_GetItem(__pyx_t_5, __pyx_v_byte_order); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_GetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__classes)); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
+    __pyx_t_7 = 0; __pyx_t_2 = __pyx_t_5; __Pyx_INCREF(__pyx_t_2);
   } else {
-    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
   }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   for (;;) {
     if (likely(PyList_CheckExact(__pyx_t_2))) {
-      if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
-      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++;
+      if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
+      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++;
     } else if (likely(PyTuple_CheckExact(__pyx_t_2))) {
-      if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
-      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++;
+      if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
+      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++;
     } else {
-      __pyx_t_1 = PyIter_Next(__pyx_t_2);
-      if (!__pyx_t_1) {
-        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyIter_Next(__pyx_t_2);
+      if (!__pyx_t_5) {
+        if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         break;
       }
-      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_GOTREF(__pyx_t_5);
     }
-    if (PyTuple_CheckExact(__pyx_t_1) && likely(PyTuple_GET_SIZE(__pyx_t_1) == 2)) {
-      PyObject* tuple = __pyx_t_1;
-      __pyx_t_7 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_7);
-      __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (PyTuple_CheckExact(__pyx_t_5) && likely(PyTuple_GET_SIZE(__pyx_t_5) == 2)) {
+      PyObject* tuple = __pyx_t_5;
+      __pyx_t_8 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_8);
+      __pyx_t_1 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_v_key);
-      __pyx_v_key = __pyx_t_7;
-      __pyx_t_7 = 0;
+      __pyx_v_key = __pyx_t_8;
+      __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_v_dt);
-      __pyx_v_dt = __pyx_t_3;
-      __pyx_t_3 = 0;
+      __pyx_v_dt = __pyx_t_1;
+      __pyx_t_1 = 0;
     } else {
-      __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_9);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_8 = __Pyx_UnpackItem(__pyx_t_9, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_7 = __Pyx_UnpackItem(__pyx_t_8, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_8, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      if (__Pyx_EndUnpack(__pyx_t_8, 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __pyx_t_1 = __Pyx_UnpackItem(__pyx_t_9, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      if (__Pyx_EndUnpack(__pyx_t_9, 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __Pyx_DECREF(__pyx_v_key);
-      __pyx_v_key = __pyx_t_7;
-      __pyx_t_7 = 0;
+      __pyx_v_key = __pyx_t_8;
+      __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_v_dt);
-      __pyx_v_dt = __pyx_t_3;
-      __pyx_t_3 = 0;
+      __pyx_v_dt = __pyx_t_1;
+      __pyx_t_1 = 0;
     }
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":176
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":203
  *         # copy refs to class_dtypes into object pointer array
- *         for key, dt in preader.class_dtypes.items():
+ *         for key, dt in mio5p.MDTYPES[byte_order]['classes'].items():
  *             if isinstance(key, str):             # <<<<<<<<<<<<<<
  *                 continue
  *             self.class_dtypes[key] = <PyObject*>dt
  */
-    __pyx_t_5 = PyString_Check(__pyx_v_key); 
-    if (__pyx_t_5) {
+    __pyx_t_4 = PyString_Check(__pyx_v_key); 
+    if (__pyx_t_4) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":177
- *         for key, dt in preader.class_dtypes.items():
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":204
+ *         for key, dt in mio5p.MDTYPES[byte_order]['classes'].items():
  *             if isinstance(key, str):
  *                 continue             # <<<<<<<<<<<<<<
  *             self.class_dtypes[key] = <PyObject*>dt
@@ -2138,20 +2402,20 @@
     }
     __pyx_L12:;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":178
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":205
  *             if isinstance(key, str):
  *                 continue
  *             self.class_dtypes[key] = <PyObject*>dt             # <<<<<<<<<<<<<<
  *         # cache correctly byte ordered dtypes
  *         if self.little_endian:
  */
-    __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_key); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    (((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->class_dtypes[__pyx_t_9]) = ((PyObject *)__pyx_v_dt);
+    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_key); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    (((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->class_dtypes[__pyx_t_6]) = ((PyObject *)__pyx_v_dt);
     __pyx_L10_continue:;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":180
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":207
  *             self.class_dtypes[key] = <PyObject*>dt
  *         # cache correctly byte ordered dtypes
  *         if self.little_endian:             # <<<<<<<<<<<<<<
@@ -2160,88 +2424,88 @@
  */
   if (((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->little_endian) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":181
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":208
  *         # cache correctly byte ordered dtypes
  *         if self.little_endian:
  *             self.U1_dtype = np.dtype('<U1')             # <<<<<<<<<<<<<<
  *         else:
  *             self.U1_dtype = np.dtype('>U1')
  */
-    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_INCREF(((PyObject *)__pyx_kp_s_1));
-    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_s_1));
-    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_1));
-    __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_3));
+    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_kp_s_3));
+    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_3));
+    __pyx_t_1 = PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GIVEREF(__pyx_t_3);
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->U1_dtype);
     __Pyx_DECREF(((PyObject *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->U1_dtype));
-    ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->U1_dtype = ((PyArray_Descr *)__pyx_t_3);
-    __pyx_t_3 = 0;
+    ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->U1_dtype = ((PyArray_Descr *)__pyx_t_1);
+    __pyx_t_1 = 0;
     goto __pyx_L13;
   }
   /*else*/ {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":183
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":210
  *             self.U1_dtype = np.dtype('<U1')
  *         else:
  *             self.U1_dtype = np.dtype('>U1')             # <<<<<<<<<<<<<<
  *         bool_dtype = np.dtype('bool')
  * 
  */
-    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
-    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_2));
-    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
-    __pyx_t_1 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_4));
+    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_s_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_4));
+    __pyx_t_5 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GIVEREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GIVEREF(__pyx_t_5);
     __Pyx_GOTREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->U1_dtype);
     __Pyx_DECREF(((PyObject *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->U1_dtype));
-    ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->U1_dtype = ((PyArray_Descr *)__pyx_t_1);
-    __pyx_t_1 = 0;
+    ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->U1_dtype = ((PyArray_Descr *)__pyx_t_5);
+    __pyx_t_5 = 0;
   }
   __pyx_L13:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":184
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":211
  *         else:
  *             self.U1_dtype = np.dtype('>U1')
  *         bool_dtype = np.dtype('bool')             # <<<<<<<<<<<<<<
  * 
  *     def set_stream(self, fobj):
  */
-  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(((PyObject *)__pyx_n_s__bool));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__bool));
+  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_s__bool));
   __Pyx_GIVEREF(((PyObject *)__pyx_n_s__bool));
-  __pyx_t_2 = PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_v_bool_dtype);
   __pyx_v_bool_dtype = __pyx_t_2;
   __pyx_t_2 = 0;
@@ -2251,12 +2515,14 @@
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_5);
   __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
   __Pyx_AddTraceback("scipy.io.matlab.mio5_utils.VarReader5.__cinit__");
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_DECREF(__pyx_v_byte_order);
+  __Pyx_DECREF(__pyx_v_uint16_codec);
   __Pyx_DECREF(__pyx_v_key);
   __Pyx_DECREF(__pyx_v_dt);
   __Pyx_DECREF(__pyx_v_bool_dtype);
@@ -2264,7 +2530,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":186
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":213
  *         bool_dtype = np.dtype('bool')
  * 
  *     def set_stream(self, fobj):             # <<<<<<<<<<<<<<
@@ -2279,14 +2545,14 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("set_stream");
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":191
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":218
  *         Called from Python when initiating a variable read
  *         '''
  *         self.cstream = streams.make_stream(fobj)             # <<<<<<<<<<<<<<
  * 
  *     def read_tag(self):
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_5scipy_2io_6matlab_7streams_make_stream(__pyx_v_fobj, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)__pyx_f_5scipy_2io_6matlab_7streams_make_stream(__pyx_v_fobj, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->cstream);
@@ -2306,7 +2572,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":193
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":220
  *         self.cstream = streams.make_stream(fobj)
  * 
  *     def read_tag(self):             # <<<<<<<<<<<<<<
@@ -2330,7 +2596,7 @@
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("read_tag");
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":214
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":241
  *         cdef char tag_ptr[4]
  *         cdef int tag_res
  *         cdef object tag_data = None             # <<<<<<<<<<<<<<
@@ -2340,17 +2606,17 @@
   __Pyx_INCREF(Py_None);
   __pyx_v_tag_data = Py_None;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":215
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":242
  *         cdef int tag_res
  *         cdef object tag_data = None
  *         tag_res = self.cread_tag(&mdtype, &byte_count, tag_ptr)             # <<<<<<<<<<<<<<
  *         if tag_res == 2: # sde format
  *             tag_data = tag_ptr[:byte_count]
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->cread_tag(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), (&__pyx_v_mdtype), (&__pyx_v_byte_count), __pyx_v_tag_ptr); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->cread_tag(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), (&__pyx_v_mdtype), (&__pyx_v_byte_count), __pyx_v_tag_ptr); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_tag_res = __pyx_t_1;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":216
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":243
  *         cdef object tag_data = None
  *         tag_res = self.cread_tag(&mdtype, &byte_count, tag_ptr)
  *         if tag_res == 2: # sde format             # <<<<<<<<<<<<<<
@@ -2360,14 +2626,14 @@
   __pyx_t_2 = (__pyx_v_tag_res == 2);
   if (__pyx_t_2) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":217
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":244
  *         tag_res = self.cread_tag(&mdtype, &byte_count, tag_ptr)
  *         if tag_res == 2: # sde format
  *             tag_data = tag_ptr[:byte_count]             # <<<<<<<<<<<<<<
  *         return (mdtype, byte_count, tag_data)
  * 
  */
-    __pyx_t_3 = PyBytes_FromStringAndSize(__pyx_v_tag_ptr + 0, __pyx_v_byte_count - 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyBytes_FromStringAndSize(__pyx_v_tag_ptr + 0, __pyx_v_byte_count - 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(((PyObject *)__pyx_t_3));
     __Pyx_DECREF(__pyx_v_tag_data);
     __pyx_v_tag_data = ((PyObject *)__pyx_t_3);
@@ -2376,7 +2642,7 @@
   }
   __pyx_L5:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":218
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":245
  *         if tag_res == 2: # sde format
  *             tag_data = tag_ptr[:byte_count]
  *         return (mdtype, byte_count, tag_data)             # <<<<<<<<<<<<<<
@@ -2384,11 +2650,11 @@
  *     cdef int cread_tag(self,
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_mdtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_mdtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_byte_count); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_byte_count); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
@@ -2418,7 +2684,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":220
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":247
  *         return (mdtype, byte_count, tag_data)
  * 
  *     cdef int cread_tag(self,             # <<<<<<<<<<<<<<
@@ -2439,7 +2705,7 @@
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("cread_tag");
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":235
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":262
  *         cdef cnp.uint16_t mdtype_sde, byte_count_sde
  *         cdef cnp.uint32_t mdtype
  *         cdef cnp.uint32_t* u4_ptr = <cnp.uint32_t*>data_ptr             # <<<<<<<<<<<<<<
@@ -2448,16 +2714,16 @@
  */
   __pyx_v_u4_ptr = ((__pyx_t_5numpy_uint32_t *)__pyx_v_data_ptr);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":263
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":290
  *         # first four bytes are two little-endian uint16 values, first
  *         # ``mdtype`` and second ``byte_count``.
  *         self.cstream.read_into(<void *>u4s, 8)             # <<<<<<<<<<<<<<
  *         if self.is_swapped:
  *             mdtype = byteswap_u4(u4s[0])
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_into(__pyx_v_self->cstream, ((void *)__pyx_v_u4s), 8); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_into(__pyx_v_self->cstream, ((void *)__pyx_v_u4s), 8); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":264
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":291
  *         # ``mdtype`` and second ``byte_count``.
  *         self.cstream.read_into(<void *>u4s, 8)
  *         if self.is_swapped:             # <<<<<<<<<<<<<<
@@ -2466,7 +2732,7 @@
  */
   if (__pyx_v_self->is_swapped) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":265
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":292
  *         self.cstream.read_into(<void *>u4s, 8)
  *         if self.is_swapped:
  *             mdtype = byteswap_u4(u4s[0])             # <<<<<<<<<<<<<<
@@ -2478,7 +2744,7 @@
   }
   /*else*/ {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":267
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":294
  *             mdtype = byteswap_u4(u4s[0])
  *         else:
  *             mdtype = u4s[0]             # <<<<<<<<<<<<<<
@@ -2489,7 +2755,7 @@
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":270
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":297
  *         # The most significant two bytes of a U4 *mdtype* will always be
  *         # 0, if they are not, this must be SDE format
  *         byte_count_sde = mdtype >> 16             # <<<<<<<<<<<<<<
@@ -2498,7 +2764,7 @@
  */
   __pyx_v_byte_count_sde = (__pyx_v_mdtype >> 16);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":271
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":298
  *         # 0, if they are not, this must be SDE format
  *         byte_count_sde = mdtype >> 16
  *         if byte_count_sde: # small data element format             # <<<<<<<<<<<<<<
@@ -2507,7 +2773,7 @@
  */
   if (__pyx_v_byte_count_sde) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":272
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":299
  *         byte_count_sde = mdtype >> 16
  *         if byte_count_sde: # small data element format
  *             mdtype_sde = mdtype & 0xffff             # <<<<<<<<<<<<<<
@@ -2516,7 +2782,7 @@
  */
     __pyx_v_mdtype_sde = (__pyx_v_mdtype & 0xffff);
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":273
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":300
  *         if byte_count_sde: # small data element format
  *             mdtype_sde = mdtype & 0xffff
  *             if byte_count_sde > 4:             # <<<<<<<<<<<<<<
@@ -2526,26 +2792,26 @@
     __pyx_t_2 = (__pyx_v_byte_count_sde > 4);
     if (__pyx_t_2) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":274
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":301
  *             mdtype_sde = mdtype & 0xffff
  *             if byte_count_sde > 4:
  *                 raise ValueError('Error in SDE format data')             # <<<<<<<<<<<<<<
  *                 return -1
  *             u4_ptr[0] = u4s[1]
  */
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_INCREF(((PyObject *)__pyx_kp_s_3));
-      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_3));
-      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_3));
-      __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_INCREF(((PyObject *)__pyx_kp_s_5));
+      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_5));
+      __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5));
+      __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_Raise(__pyx_t_4, 0, 0);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":275
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":302
  *             if byte_count_sde > 4:
  *                 raise ValueError('Error in SDE format data')
  *                 return -1             # <<<<<<<<<<<<<<
@@ -2558,7 +2824,7 @@
     }
     __pyx_L5:;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":276
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":303
  *                 raise ValueError('Error in SDE format data')
  *                 return -1
  *             u4_ptr[0] = u4s[1]             # <<<<<<<<<<<<<<
@@ -2567,7 +2833,7 @@
  */
     (__pyx_v_u4_ptr[0]) = (__pyx_v_u4s[1]);
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":277
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":304
  *                 return -1
  *             u4_ptr[0] = u4s[1]
  *             mdtype_ptr[0] = mdtype_sde             # <<<<<<<<<<<<<<
@@ -2576,7 +2842,7 @@
  */
     (__pyx_v_mdtype_ptr[0]) = __pyx_v_mdtype_sde;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":278
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":305
  *             u4_ptr[0] = u4s[1]
  *             mdtype_ptr[0] = mdtype_sde
  *             byte_count_ptr[0] = byte_count_sde             # <<<<<<<<<<<<<<
@@ -2585,7 +2851,7 @@
  */
     (__pyx_v_byte_count_ptr[0]) = __pyx_v_byte_count_sde;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":279
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":306
  *             mdtype_ptr[0] = mdtype_sde
  *             byte_count_ptr[0] = byte_count_sde
  *             return 2             # <<<<<<<<<<<<<<
@@ -2598,7 +2864,7 @@
   }
   __pyx_L4:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":281
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":308
  *             return 2
  *         # regular element
  *         if self.is_swapped:             # <<<<<<<<<<<<<<
@@ -2607,7 +2873,7 @@
  */
   if (__pyx_v_self->is_swapped) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":282
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":309
  *         # regular element
  *         if self.is_swapped:
  *             byte_count_ptr[0] = byteswap_u4(u4s[1])             # <<<<<<<<<<<<<<
@@ -2619,7 +2885,7 @@
   }
   /*else*/ {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":284
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":311
  *             byte_count_ptr[0] = byteswap_u4(u4s[1])
  *         else:
  *             byte_count_ptr[0] = u4s[1]             # <<<<<<<<<<<<<<
@@ -2630,7 +2896,7 @@
   }
   __pyx_L6:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":285
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":312
  *         else:
  *             byte_count_ptr[0] = u4s[1]
  *         mdtype_ptr[0] = mdtype             # <<<<<<<<<<<<<<
@@ -2639,7 +2905,7 @@
  */
   (__pyx_v_mdtype_ptr[0]) = __pyx_v_mdtype;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":286
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":313
  *             byte_count_ptr[0] = u4s[1]
  *         mdtype_ptr[0] = mdtype
  *         u4_ptr[0] = 0             # <<<<<<<<<<<<<<
@@ -2648,7 +2914,7 @@
  */
   (__pyx_v_u4_ptr[0]) = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":287
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":314
  *         mdtype_ptr[0] = mdtype
  *         u4_ptr[0] = 0
  *         return 1             # <<<<<<<<<<<<<<
@@ -2670,7 +2936,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":289
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":316
  *         return 1
  * 
  *     cdef object read_element(self,             # <<<<<<<<<<<<<<
@@ -2680,7 +2946,7 @@
 
 static  PyObject *__pyx_f_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_element(struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *__pyx_v_self, __pyx_t_5numpy_uint32_t *__pyx_v_mdtype_ptr, __pyx_t_5numpy_uint32_t *__pyx_v_byte_count_ptr, void **__pyx_v_pp, struct __pyx_opt_args_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_element *__pyx_optional_args) {
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":293
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":320
  *                              cnp.uint32_t *byte_count_ptr,
  *                              void **pp,
  *                              int copy=True):             # <<<<<<<<<<<<<<
@@ -2709,17 +2975,17 @@
   }
   __pyx_v_data = Py_None; __Pyx_INCREF(Py_None);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":329
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":356
  *         cdef int tag_res = self.cread_tag(mdtype_ptr,
  *                                           byte_count_ptr,
  *                                           tag_data)             # <<<<<<<<<<<<<<
  *         mdtype = mdtype_ptr[0]
  *         byte_count = byte_count_ptr[0]
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->cread_tag(__pyx_v_self, __pyx_v_mdtype_ptr, __pyx_v_byte_count_ptr, __pyx_v_tag_data); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->cread_tag(__pyx_v_self, __pyx_v_mdtype_ptr, __pyx_v_byte_count_ptr, __pyx_v_tag_data); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_tag_res = __pyx_t_1;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":330
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":357
  *                                           byte_count_ptr,
  *                                           tag_data)
  *         mdtype = mdtype_ptr[0]             # <<<<<<<<<<<<<<
@@ -2728,7 +2994,7 @@
  */
   __pyx_v_mdtype = (__pyx_v_mdtype_ptr[0]);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":331
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":358
  *                                           tag_data)
  *         mdtype = mdtype_ptr[0]
  *         byte_count = byte_count_ptr[0]             # <<<<<<<<<<<<<<
@@ -2737,7 +3003,7 @@
  */
   __pyx_v_byte_count = (__pyx_v_byte_count_ptr[0]);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":332
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":359
  *         mdtype = mdtype_ptr[0]
  *         byte_count = byte_count_ptr[0]
  *         if tag_res == 1: # full format             # <<<<<<<<<<<<<<
@@ -2747,7 +3013,7 @@
   __pyx_t_2 = (__pyx_v_tag_res == 1);
   if (__pyx_t_2) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":336
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":363
  *                 byte_count,
  *                 pp,
  *                 copy)             # <<<<<<<<<<<<<<
@@ -2756,13 +3022,13 @@
  */
     __pyx_t_4.__pyx_n = 1;
     __pyx_t_4.copy = __pyx_v_copy;
-    __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_string(__pyx_v_self->cstream, __pyx_v_byte_count, __pyx_v_pp, &__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_string(__pyx_v_self->cstream, __pyx_v_byte_count, __pyx_v_pp, &__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_v_data);
     __pyx_v_data = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":338
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":365
  *                 copy)
  *             # Seek to next 64-bit boundary
  *             mod8 = byte_count % 8             # <<<<<<<<<<<<<<
@@ -2771,7 +3037,7 @@
  */
     __pyx_v_mod8 = __Pyx_mod_long(__pyx_v_byte_count, 8);
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":339
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":366
  *             # Seek to next 64-bit boundary
  *             mod8 = byte_count % 8
  *             if mod8:             # <<<<<<<<<<<<<<
@@ -2780,7 +3046,7 @@
  */
     if (__pyx_v_mod8) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":340
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":367
  *             mod8 = byte_count % 8
  *             if mod8:
  *                 self.cstream.seek(8 - mod8, 1)             # <<<<<<<<<<<<<<
@@ -2789,7 +3055,7 @@
  */
       __pyx_t_5.__pyx_n = 1;
       __pyx_t_5.whence = 1;
-      __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->seek(__pyx_v_self->cstream, (8 - __pyx_v_mod8), 0, &__pyx_t_5); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->seek(__pyx_v_self->cstream, (8 - __pyx_v_mod8), 0, &__pyx_t_5); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L4;
     }
     __pyx_L4:;
@@ -2797,32 +3063,32 @@
   }
   /*else*/ {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":342
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":369
  *                 self.cstream.seek(8 - mod8, 1)
  *         else: # SDE format, make safer home for data
  *             data = PyBytes_FromStringAndSize(tag_data, byte_count)             # <<<<<<<<<<<<<<
  *             pp[0] = <char *>data
  *         return data
  */
-    __pyx_t_3 = ((PyObject *)PyBytes_FromStringAndSize(__pyx_v_tag_data, __pyx_v_byte_count)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = ((PyObject *)PyBytes_FromStringAndSize(__pyx_v_tag_data, __pyx_v_byte_count)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_v_data);
     __pyx_v_data = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":343
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":370
  *         else: # SDE format, make safer home for data
  *             data = PyBytes_FromStringAndSize(tag_data, byte_count)
  *             pp[0] = <char *>data             # <<<<<<<<<<<<<<
  *         return data
  * 
  */
-    __pyx_t_6 = PyBytes_AsString(__pyx_v_data); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyBytes_AsString(__pyx_v_data); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     (__pyx_v_pp[0]) = __pyx_t_6;
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":344
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":371
  *             data = PyBytes_FromStringAndSize(tag_data, byte_count)
  *             pp[0] = <char *>data
  *         return data             # <<<<<<<<<<<<<<
@@ -2847,7 +3113,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":346
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":373
  *         return data
  * 
  *     cdef int read_element_into(self,             # <<<<<<<<<<<<<<
@@ -2865,17 +3131,17 @@
   struct __pyx_opt_args_5scipy_2io_6matlab_7streams_13GenericStream_seek __pyx_t_3;
   __Pyx_RefNannySetupContext("read_element_into");
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":375
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":402
  *             mdtype_ptr,
  *             byte_count_ptr,
  *             <char *>ptr)             # <<<<<<<<<<<<<<
  *         cdef cnp.uint32_t byte_count = byte_count_ptr[0]
  *         if res == 1: # full format
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->cread_tag(__pyx_v_self, __pyx_v_mdtype_ptr, __pyx_v_byte_count_ptr, ((char *)__pyx_v_ptr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->cread_tag(__pyx_v_self, __pyx_v_mdtype_ptr, __pyx_v_byte_count_ptr, ((char *)__pyx_v_ptr)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_res = __pyx_t_1;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":376
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":403
  *             byte_count_ptr,
  *             <char *>ptr)
  *         cdef cnp.uint32_t byte_count = byte_count_ptr[0]             # <<<<<<<<<<<<<<
@@ -2884,7 +3150,7 @@
  */
   __pyx_v_byte_count = (__pyx_v_byte_count_ptr[0]);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":377
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":404
  *             <char *>ptr)
  *         cdef cnp.uint32_t byte_count = byte_count_ptr[0]
  *         if res == 1: # full format             # <<<<<<<<<<<<<<
@@ -2894,17 +3160,17 @@
   __pyx_t_2 = (__pyx_v_res == 1);
   if (__pyx_t_2) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":378
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":405
  *         cdef cnp.uint32_t byte_count = byte_count_ptr[0]
  *         if res == 1: # full format
  *             res = self.cstream.read_into(ptr, byte_count)             # <<<<<<<<<<<<<<
  *             # Seek to next 64-bit boundary
  *             mod8 = byte_count % 8
  */
-    __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_into(__pyx_v_self->cstream, __pyx_v_ptr, __pyx_v_byte_count); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_into(__pyx_v_self->cstream, __pyx_v_ptr, __pyx_v_byte_count); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_res = __pyx_t_1;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":380
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":407
  *             res = self.cstream.read_into(ptr, byte_count)
  *             # Seek to next 64-bit boundary
  *             mod8 = byte_count % 8             # <<<<<<<<<<<<<<
@@ -2913,7 +3179,7 @@
  */
     __pyx_v_mod8 = __Pyx_mod_long(__pyx_v_byte_count, 8);
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":381
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":408
  *             # Seek to next 64-bit boundary
  *             mod8 = byte_count % 8
  *             if mod8:             # <<<<<<<<<<<<<<
@@ -2922,7 +3188,7 @@
  */
     if (__pyx_v_mod8) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":382
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":409
  *             mod8 = byte_count % 8
  *             if mod8:
  *                 self.cstream.seek(8 - mod8, 1)             # <<<<<<<<<<<<<<
@@ -2931,7 +3197,7 @@
  */
       __pyx_t_3.__pyx_n = 1;
       __pyx_t_3.whence = 1;
-      __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->seek(__pyx_v_self->cstream, (8 - __pyx_v_mod8), 0, &__pyx_t_3); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->seek(__pyx_v_self->cstream, (8 - __pyx_v_mod8), 0, &__pyx_t_3); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L4;
     }
     __pyx_L4:;
@@ -2939,7 +3205,7 @@
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":383
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":410
  *             if mod8:
  *                 self.cstream.seek(8 - mod8, 1)
  *         return 0             # <<<<<<<<<<<<<<
@@ -2959,7 +3225,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":385
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":412
  *         return 0
  * 
  *     cpdef inline cnp.ndarray read_numeric(self, int copy=True):             # <<<<<<<<<<<<<<
@@ -2995,21 +3261,21 @@
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overriden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_numeric); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_numeric); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_numeric)) {
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_2 = PyInt_FromLong(__pyx_v_copy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyInt_FromLong(__pyx_v_copy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
       __Pyx_GIVEREF(__pyx_t_2);
       __pyx_t_2 = 0;
-      __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = ((PyArrayObject *)__pyx_t_2);
       __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -3018,7 +3284,7 @@
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":398
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":425
  *         cdef cnp.ndarray el
  *         cdef object data = self.read_element(
  *             &mdtype, &byte_count, <void **>&data_ptr, copy)             # <<<<<<<<<<<<<<
@@ -3027,12 +3293,12 @@
  */
   __pyx_t_4.__pyx_n = 1;
   __pyx_t_4.copy = __pyx_v_copy;
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_element(__pyx_v_self, (&__pyx_v_mdtype), (&__pyx_v_byte_count), ((void **)(&__pyx_v_data_ptr)), &__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_element(__pyx_v_self, (&__pyx_v_mdtype), (&__pyx_v_byte_count), ((void **)(&__pyx_v_data_ptr)), &__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_data = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":399
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":426
  *         cdef object data = self.read_element(
  *             &mdtype, &byte_count, <void **>&data_ptr, copy)
  *         cdef cnp.dtype dt = <cnp.dtype>self.dtypes[mdtype]             # <<<<<<<<<<<<<<
@@ -3043,7 +3309,7 @@
   __Pyx_INCREF(((PyObject *)((PyArray_Descr *)__pyx_t_5)));
   __pyx_v_dt = ((PyArray_Descr *)__pyx_t_5);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":400
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":427
  *             &mdtype, &byte_count, <void **>&data_ptr, copy)
  *         cdef cnp.dtype dt = <cnp.dtype>self.dtypes[mdtype]
  *         el_count = byte_count // dt.itemsize             # <<<<<<<<<<<<<<
@@ -3052,11 +3318,11 @@
  */
   if (unlikely(__pyx_v_dt->elsize == 0)) {
     PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_v_el_count = (__pyx_v_byte_count / __pyx_v_dt->elsize);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":401
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":428
  *         cdef cnp.dtype dt = <cnp.dtype>self.dtypes[mdtype]
  *         el_count = byte_count // dt.itemsize
  *         cdef int flags = 0             # <<<<<<<<<<<<<<
@@ -3065,7 +3331,7 @@
  */
   __pyx_v_flags = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":402
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":429
  *         el_count = byte_count // dt.itemsize
  *         cdef int flags = 0
  *         if copy:             # <<<<<<<<<<<<<<
@@ -3074,7 +3340,7 @@
  */
   if (__pyx_v_copy) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":403
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":430
  *         cdef int flags = 0
  *         if copy:
  *             flags = cnp.NPY_WRITEABLE             # <<<<<<<<<<<<<<
@@ -3086,7 +3352,7 @@
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":404
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":431
  *         if copy:
  *             flags = cnp.NPY_WRITEABLE
  *         Py_INCREF(<object> dt)             # <<<<<<<<<<<<<<
@@ -3095,20 +3361,20 @@
  */
   Py_INCREF(((PyObject *)__pyx_v_dt));
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":412
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":439
  *                                    <void*>data_ptr,
  *                                    flags,
  *                                    <object>NULL)             # <<<<<<<<<<<<<<
  *         Py_INCREF(<object> data)
  *         PyArray_Set_BASE(el, data)
  */
-  __pyx_t_1 = ((PyObject *)PyArray_NewFromDescr((&PyArray_Type), __pyx_v_dt, 1, (&__pyx_v_el_count), NULL, ((void *)__pyx_v_data_ptr), __pyx_v_flags, ((PyObject *)NULL))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)PyArray_NewFromDescr((&PyArray_Type), __pyx_v_dt, 1, (&__pyx_v_el_count), NULL, ((void *)__pyx_v_data_ptr), __pyx_v_flags, ((PyObject *)NULL))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(((PyObject *)__pyx_v_el));
   __pyx_v_el = ((PyArrayObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":413
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":440
  *                                    flags,
  *                                    <object>NULL)
  *         Py_INCREF(<object> data)             # <<<<<<<<<<<<<<
@@ -3117,7 +3383,7 @@
  */
   Py_INCREF(__pyx_v_data);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":414
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":441
  *                                    <object>NULL)
  *         Py_INCREF(<object> data)
  *         PyArray_Set_BASE(el, data)             # <<<<<<<<<<<<<<
@@ -3126,7 +3392,7 @@
  */
   PyArray_Set_BASE(__pyx_v_el, __pyx_v_data);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":415
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":442
  *         Py_INCREF(<object> data)
  *         PyArray_Set_BASE(el, data)
  *         return el             # <<<<<<<<<<<<<<
@@ -3155,7 +3421,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":385
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":412
  *         return 0
  * 
  *     cpdef inline cnp.ndarray read_numeric(self, int copy=True):             # <<<<<<<<<<<<<<
@@ -3188,24 +3454,24 @@
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "read_numeric") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "read_numeric") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     if (values[0]) {
-      __pyx_v_copy = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_copy == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_copy = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_copy == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     } else {
       __pyx_v_copy = ((int)1);
     }
   } else {
     __pyx_v_copy = ((int)1);
     switch (PyTuple_GET_SIZE(__pyx_args)) {
-      case  1: __pyx_v_copy = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_copy == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      case  1: __pyx_v_copy = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 0)); if (unlikely((__pyx_v_copy == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       case  0: break;
       default: goto __pyx_L5_argtuple_error;
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_numeric", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("read_numeric", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("scipy.io.matlab.mio5_utils.VarReader5.read_numeric");
   __Pyx_RefNannyFinishContext();
@@ -3214,7 +3480,7 @@
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.copy = __pyx_v_copy;
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_numeric(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), 1, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_numeric(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), 1, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -3232,7 +3498,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":417
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":444
  *         return el
  * 
  *     cdef inline object read_int8_string(self):             # <<<<<<<<<<<<<<
@@ -3252,20 +3518,20 @@
   __Pyx_RefNannySetupContext("read_int8_string");
   __pyx_v_data = Py_None; __Pyx_INCREF(Py_None);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":429
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":456
  *             void *ptr
  *             object data
  *         data = self.read_element(&mdtype, &byte_count, &ptr)             # <<<<<<<<<<<<<<
  *         if mdtype != miINT8:
  *             raise TypeError('Expecting miINT8 as data type')
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_element(__pyx_v_self, (&__pyx_v_mdtype), (&__pyx_v_byte_count), (&__pyx_v_ptr), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_element(__pyx_v_self, (&__pyx_v_mdtype), (&__pyx_v_byte_count), (&__pyx_v_ptr), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_v_data);
   __pyx_v_data = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":430
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":457
  *             object data
  *         data = self.read_element(&mdtype, &byte_count, &ptr)
  *         if mdtype != miINT8:             # <<<<<<<<<<<<<<
@@ -3275,29 +3541,29 @@
   __pyx_t_2 = (__pyx_v_mdtype != __pyx_e_5scipy_2io_6matlab_10mio5_utils_miINT8);
   if (__pyx_t_2) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":431
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":458
  *         data = self.read_element(&mdtype, &byte_count, &ptr)
  *         if mdtype != miINT8:
  *             raise TypeError('Expecting miINT8 as data type')             # <<<<<<<<<<<<<<
  *         return data
  * 
  */
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_INCREF(((PyObject *)__pyx_kp_s_4));
-    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_s_4));
-    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_4));
-    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_6));
+    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_s_6));
+    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_6));
+    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L3;
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":432
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":459
  *         if mdtype != miINT8:
  *             raise TypeError('Expecting miINT8 as data type')
  *         return data             # <<<<<<<<<<<<<<
@@ -3323,7 +3589,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":434
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":461
  *         return data
  * 
  *     cdef int read_into_int32s(self, cnp.int32_t *int32p) except -1:             # <<<<<<<<<<<<<<
@@ -3344,16 +3610,16 @@
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("read_into_int32s");
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":451
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":478
  *             cnp.uint32_t mdtype, byte_count
  *             int i
  *         self.read_element_into(&mdtype, &byte_count, <void *>int32p)             # <<<<<<<<<<<<<<
  *         if mdtype != miINT32:
  *             raise TypeError('Expecting miINT32 as data type')
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_element_into(__pyx_v_self, (&__pyx_v_mdtype), (&__pyx_v_byte_count), ((void *)__pyx_v_int32p)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_element_into(__pyx_v_self, (&__pyx_v_mdtype), (&__pyx_v_byte_count), ((void *)__pyx_v_int32p)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":452
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":479
  *             int i
  *         self.read_element_into(&mdtype, &byte_count, <void *>int32p)
  *         if mdtype != miINT32:             # <<<<<<<<<<<<<<
@@ -3363,26 +3629,26 @@
   __pyx_t_2 = (__pyx_v_mdtype != __pyx_e_5scipy_2io_6matlab_10mio5_utils_miINT32);
   if (__pyx_t_2) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":453
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":480
  *         self.read_element_into(&mdtype, &byte_count, <void *>int32p)
  *         if mdtype != miINT32:
  *             raise TypeError('Expecting miINT32 as data type')             # <<<<<<<<<<<<<<
  *             return -1
  *         cdef int n_ints = byte_count // 4
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(((PyObject *)__pyx_kp_s_5));
-    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_5));
-    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_5));
-    __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_7));
+    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_7));
+    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_7));
+    __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":454
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":481
  *         if mdtype != miINT32:
  *             raise TypeError('Expecting miINT32 as data type')
  *             return -1             # <<<<<<<<<<<<<<
@@ -3395,7 +3661,7 @@
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":455
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":482
  *             raise TypeError('Expecting miINT32 as data type')
  *             return -1
  *         cdef int n_ints = byte_count // 4             # <<<<<<<<<<<<<<
@@ -3404,7 +3670,7 @@
  */
   __pyx_v_n_ints = __Pyx_div_long(__pyx_v_byte_count, 4);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":456
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":483
  *             return -1
  *         cdef int n_ints = byte_count // 4
  *         if self.is_swapped:             # <<<<<<<<<<<<<<
@@ -3413,7 +3679,7 @@
  */
   if (__pyx_v_self->is_swapped) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":457
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":484
  *         cdef int n_ints = byte_count // 4
  *         if self.is_swapped:
  *             for i in range(n_ints):             # <<<<<<<<<<<<<<
@@ -3424,7 +3690,7 @@
     for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_1; __pyx_t_5+=1) {
       __pyx_v_i = __pyx_t_5;
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":458
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":485
  *         if self.is_swapped:
  *             for i in range(n_ints):
  *                 int32p[i] = byteswap_u4(int32p[i])             # <<<<<<<<<<<<<<
@@ -3437,7 +3703,7 @@
   }
   __pyx_L4:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":459
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":486
  *             for i in range(n_ints):
  *                 int32p[i] = byteswap_u4(int32p[i])
  *         return n_ints             # <<<<<<<<<<<<<<
@@ -3459,7 +3725,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":461
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":488
  *         return n_ints
  * 
  *     def read_full_tag(self):             # <<<<<<<<<<<<<<
@@ -3479,16 +3745,16 @@
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("read_full_tag");
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":478
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":505
  *         '''
  *         cdef cnp.uint32_t mdtype, byte_count
  *         self.cread_full_tag(&mdtype, &byte_count)             # <<<<<<<<<<<<<<
  *         return mdtype, byte_count
  * 
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->cread_full_tag(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), (&__pyx_v_mdtype), (&__pyx_v_byte_count)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->cread_full_tag(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), (&__pyx_v_mdtype), (&__pyx_v_byte_count)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":479
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":506
  *         cdef cnp.uint32_t mdtype, byte_count
  *         self.cread_full_tag(&mdtype, &byte_count)
  *         return mdtype, byte_count             # <<<<<<<<<<<<<<
@@ -3496,11 +3762,11 @@
  *     cdef int cread_full_tag(self,
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_mdtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_mdtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_byte_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_byte_count); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
@@ -3526,7 +3792,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":481
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":508
  *         return mdtype, byte_count
  * 
  *     cdef int cread_full_tag(self,             # <<<<<<<<<<<<<<
@@ -3540,16 +3806,16 @@
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("cread_full_tag");
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":486
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":513
  *         ''' C method for reading full u4, u4 tag from stream'''
  *         cdef cnp.uint32_t u4s[2]
  *         self.cstream.read_into(<void *>u4s, 8)             # <<<<<<<<<<<<<<
  *         if self.is_swapped:
  *             mdtype[0] = byteswap_u4(u4s[0])
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_into(__pyx_v_self->cstream, ((void *)__pyx_v_u4s), 8); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_into(__pyx_v_self->cstream, ((void *)__pyx_v_u4s), 8); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":487
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":514
  *         cdef cnp.uint32_t u4s[2]
  *         self.cstream.read_into(<void *>u4s, 8)
  *         if self.is_swapped:             # <<<<<<<<<<<<<<
@@ -3558,7 +3824,7 @@
  */
   if (__pyx_v_self->is_swapped) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":488
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":515
  *         self.cstream.read_into(<void *>u4s, 8)
  *         if self.is_swapped:
  *             mdtype[0] = byteswap_u4(u4s[0])             # <<<<<<<<<<<<<<
@@ -3567,7 +3833,7 @@
  */
     (__pyx_v_mdtype[0]) = __pyx_f_5scipy_2io_6matlab_10mio5_utils_byteswap_u4((__pyx_v_u4s[0]), 0);
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":489
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":516
  *         if self.is_swapped:
  *             mdtype[0] = byteswap_u4(u4s[0])
  *             byte_count[0] = byteswap_u4(u4s[1])             # <<<<<<<<<<<<<<
@@ -3579,7 +3845,7 @@
   }
   /*else*/ {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":491
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":518
  *             byte_count[0] = byteswap_u4(u4s[1])
  *         else:
  *             mdtype[0] = u4s[0]             # <<<<<<<<<<<<<<
@@ -3588,7 +3854,7 @@
  */
     (__pyx_v_mdtype[0]) = (__pyx_v_u4s[0]);
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":492
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":519
  *         else:
  *             mdtype[0] = u4s[0]
  *             byte_count[0] = u4s[1]             # <<<<<<<<<<<<<<
@@ -3599,7 +3865,7 @@
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":493
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":520
  *             mdtype[0] = u4s[0]
  *             byte_count[0] = u4s[1]
  *         return 0             # <<<<<<<<<<<<<<
@@ -3619,7 +3885,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":495
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":522
  *         return 0
  * 
  *     cpdef VarHeader5 read_header(self):             # <<<<<<<<<<<<<<
@@ -3647,13 +3913,13 @@
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overriden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_header); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_header); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_header)) {
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_t_2);
       __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -3662,25 +3928,25 @@
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":509
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":536
  *             VarHeader5 header
  *         # Read and discard mdtype and byte_count
  *         self.cstream.read_into(<void *>u4s, 8)             # <<<<<<<<<<<<<<
  *         # get array flags and nzmax
  *         self.cstream.read_into(<void *>u4s, 8)
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_into(__pyx_v_self->cstream, ((void *)__pyx_v_u4s), 8); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_into(__pyx_v_self->cstream, ((void *)__pyx_v_u4s), 8); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":511
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":538
  *         self.cstream.read_into(<void *>u4s, 8)
  *         # get array flags and nzmax
  *         self.cstream.read_into(<void *>u4s, 8)             # <<<<<<<<<<<<<<
  *         if self.is_swapped:
  *             flags_class = byteswap_u4(u4s[0])
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_into(__pyx_v_self->cstream, ((void *)__pyx_v_u4s), 8); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_7streams_GenericStream *)__pyx_v_self->cstream->__pyx_vtab)->read_into(__pyx_v_self->cstream, ((void *)__pyx_v_u4s), 8); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":512
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":539
  *         # get array flags and nzmax
  *         self.cstream.read_into(<void *>u4s, 8)
  *         if self.is_swapped:             # <<<<<<<<<<<<<<
@@ -3689,7 +3955,7 @@
  */
   if (__pyx_v_self->is_swapped) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":513
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":540
  *         self.cstream.read_into(<void *>u4s, 8)
  *         if self.is_swapped:
  *             flags_class = byteswap_u4(u4s[0])             # <<<<<<<<<<<<<<
@@ -3698,7 +3964,7 @@
  */
     __pyx_v_flags_class = __pyx_f_5scipy_2io_6matlab_10mio5_utils_byteswap_u4((__pyx_v_u4s[0]), 0);
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":514
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":541
  *         if self.is_swapped:
  *             flags_class = byteswap_u4(u4s[0])
  *             nzmax = byteswap_u4(u4s[1])             # <<<<<<<<<<<<<<
@@ -3710,7 +3976,7 @@
   }
   /*else*/ {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":516
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":543
  *             nzmax = byteswap_u4(u4s[1])
  *         else:
  *             flags_class = u4s[0]             # <<<<<<<<<<<<<<
@@ -3719,7 +3985,7 @@
  */
     __pyx_v_flags_class = (__pyx_v_u4s[0]);
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":517
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":544
  *         else:
  *             flags_class = u4s[0]
  *             nzmax = u4s[1]             # <<<<<<<<<<<<<<
@@ -3730,20 +3996,20 @@
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":518
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":545
  *             flags_class = u4s[0]
  *             nzmax = u4s[1]
  *         header = VarHeader5()             # <<<<<<<<<<<<<<
  *         mc = flags_class & 0xFF
  *         header.mclass = mc
  */
-  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(((PyObject *)__pyx_v_header));
   __pyx_v_header = ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":519
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":546
  *             nzmax = u4s[1]
  *         header = VarHeader5()
  *         mc = flags_class & 0xFF             # <<<<<<<<<<<<<<
@@ -3752,7 +4018,7 @@
  */
   __pyx_v_mc = (__pyx_v_flags_class & 0xFF);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":520
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":547
  *         header = VarHeader5()
  *         mc = flags_class & 0xFF
  *         header.mclass = mc             # <<<<<<<<<<<<<<
@@ -3761,7 +4027,7 @@
  */
   __pyx_v_header->mclass = __pyx_v_mc;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":521
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":548
  *         mc = flags_class & 0xFF
  *         header.mclass = mc
  *         header.is_logical = flags_class >> 9 & 1             # <<<<<<<<<<<<<<
@@ -3770,7 +4036,7 @@
  */
   __pyx_v_header->is_logical = ((__pyx_v_flags_class >> 9) & 1);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":522
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":549
  *         header.mclass = mc
  *         header.is_logical = flags_class >> 9 & 1
  *         header.is_global = flags_class >> 10 & 1             # <<<<<<<<<<<<<<
@@ -3779,7 +4045,7 @@
  */
   __pyx_v_header->is_global = ((__pyx_v_flags_class >> 10) & 1);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":523
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":550
  *         header.is_logical = flags_class >> 9 & 1
  *         header.is_global = flags_class >> 10 & 1
  *         header.is_complex = flags_class >> 11 & 1             # <<<<<<<<<<<<<<
@@ -3788,7 +4054,7 @@
  */
   __pyx_v_header->is_complex = ((__pyx_v_flags_class >> 11) & 1);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":524
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":551
  *         header.is_global = flags_class >> 10 & 1
  *         header.is_complex = flags_class >> 11 & 1
  *         header.nzmax = nzmax             # <<<<<<<<<<<<<<
@@ -3797,7 +4063,7 @@
  */
   __pyx_v_header->nzmax = __pyx_v_nzmax;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":527
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":554
  *         # all miMATRIX types except the mxOPAQUE_CLASS have dims and a
  *         # name.
  *         if mc == mxOPAQUE_CLASS:             # <<<<<<<<<<<<<<
@@ -3807,7 +4073,7 @@
   __pyx_t_4 = (__pyx_v_mc == __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxOPAQUE_CLASS);
   if (__pyx_t_4) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":528
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":555
  *         # name.
  *         if mc == mxOPAQUE_CLASS:
  *             header.name = None             # <<<<<<<<<<<<<<
@@ -3820,7 +4086,7 @@
     __Pyx_DECREF(__pyx_v_header->name);
     __pyx_v_header->name = Py_None;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":529
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":556
  *         if mc == mxOPAQUE_CLASS:
  *             header.name = None
  *             header.dims = None             # <<<<<<<<<<<<<<
@@ -3833,7 +4099,7 @@
     __Pyx_DECREF(__pyx_v_header->dims);
     __pyx_v_header->dims = Py_None;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":530
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":557
  *             header.name = None
  *             header.dims = None
  *             return header             # <<<<<<<<<<<<<<
@@ -3848,17 +4114,17 @@
   }
   __pyx_L4:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":531
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":558
  *             header.dims = None
  *             return header
  *         header.n_dims = self.read_into_int32s(header.dims_ptr)             # <<<<<<<<<<<<<<
  *         if header.n_dims > _MAT_MAXDIMS:
  *             raise ValueError('Too many dimensions (%d) for numpy arrays'
  */
-  __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_into_int32s(__pyx_v_self, __pyx_v_header->dims_ptr); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_into_int32s(__pyx_v_self, __pyx_v_header->dims_ptr); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_header->n_dims = __pyx_t_3;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":532
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":559
  *             return header
  *         header.n_dims = self.read_into_int32s(header.dims_ptr)
  *         if header.n_dims > _MAT_MAXDIMS:             # <<<<<<<<<<<<<<
@@ -3868,41 +4134,41 @@
   __pyx_t_4 = (__pyx_v_header->n_dims > 32);
   if (__pyx_t_4) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":534
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":561
  *         if header.n_dims > _MAT_MAXDIMS:
  *             raise ValueError('Too many dimensions (%d) for numpy arrays'
  *                              % header.n_dims)             # <<<<<<<<<<<<<<
  *         # convert dims to list
  *         header.dims = []
  */
-    __pyx_t_1 = PyInt_FromLong(__pyx_v_header->n_dims); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyInt_FromLong(__pyx_v_header->n_dims); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_6), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_8), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_2));
     __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
     __pyx_t_2 = 0;
-    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L5;
   }
   __pyx_L5:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":536
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":563
  *                              % header.n_dims)
  *         # convert dims to list
  *         header.dims = []             # <<<<<<<<<<<<<<
  *         for i in range(header.n_dims):
  *             header.dims.append(header.dims_ptr[i])
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
   __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
   __Pyx_GOTREF(__pyx_v_header->dims);
@@ -3910,7 +4176,7 @@
   __pyx_v_header->dims = ((PyObject *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":537
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":564
  *         # convert dims to list
  *         header.dims = []
  *         for i in range(header.n_dims):             # <<<<<<<<<<<<<<
@@ -3921,29 +4187,29 @@
   for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_3; __pyx_t_5+=1) {
     __pyx_v_i = __pyx_t_5;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":538
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":565
  *         header.dims = []
  *         for i in range(header.n_dims):
  *             header.dims.append(header.dims_ptr[i])             # <<<<<<<<<<<<<<
  *         header.name = self.read_int8_string()
  *         return header
  */
-    __pyx_t_2 = __Pyx_PyInt_to_py_npy_int32((__pyx_v_header->dims_ptr[__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyInt_to_py_npy_int32((__pyx_v_header->dims_ptr[__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_header->dims, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Append(__pyx_v_header->dims, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":539
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":566
  *         for i in range(header.n_dims):
  *             header.dims.append(header.dims_ptr[i])
  *         header.name = self.read_int8_string()             # <<<<<<<<<<<<<<
  *         return header
  * 
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_header->name);
@@ -3951,7 +4217,7 @@
   __pyx_v_header->name = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":540
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":567
  *             header.dims.append(header.dims_ptr[i])
  *         header.name = self.read_int8_string()
  *         return header             # <<<<<<<<<<<<<<
@@ -3977,7 +4243,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":495
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":522
  *         return 0
  * 
  *     cpdef VarHeader5 read_header(self):             # <<<<<<<<<<<<<<
@@ -3992,7 +4258,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("read_header");
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_header(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_header(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4010,7 +4276,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":542
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":569
  *         return header
  * 
  *     cdef inline size_t size_from_header(self, VarHeader5 header):             # <<<<<<<<<<<<<<
@@ -4026,18 +4292,18 @@
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("size_from_header");
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":559
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":586
  *         '''
  *         # calculate number of items in array from dims product
  *         cdef size_t size = 1             # <<<<<<<<<<<<<<
+ *         cdef int i
  *         for i in range(header.n_dims):
- *             size *= header.dims_ptr[i]
  */
   __pyx_v_size = 1;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":560
- *         # calculate number of items in array from dims product
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":588
  *         cdef size_t size = 1
+ *         cdef int i
  *         for i in range(header.n_dims):             # <<<<<<<<<<<<<<
  *             size *= header.dims_ptr[i]
  *         return size
@@ -4046,8 +4312,8 @@
   for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
     __pyx_v_i = __pyx_t_2;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":561
- *         cdef size_t size = 1
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":589
+ *         cdef int i
  *         for i in range(header.n_dims):
  *             size *= header.dims_ptr[i]             # <<<<<<<<<<<<<<
  *         return size
@@ -4056,7 +4322,7 @@
     __pyx_v_size *= (__pyx_v_header->dims_ptr[__pyx_v_i]);
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":562
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":590
  *         for i in range(header.n_dims):
  *             size *= header.dims_ptr[i]
  *         return size             # <<<<<<<<<<<<<<
@@ -4072,7 +4338,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":564
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":592
  *         return size
  * 
  *     cdef read_mi_matrix(self, int process=1):             # <<<<<<<<<<<<<<
@@ -4100,16 +4366,16 @@
   }
   __pyx_v_header = ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)Py_None); __Pyx_INCREF(Py_None);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":585
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":613
  *             object arr
  *         # read full tag
  *         self.cread_full_tag(&mdtype, &byte_count)             # <<<<<<<<<<<<<<
  *         if mdtype != miMATRIX:
  *             raise TypeError('Expecting matrix here')
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->cread_full_tag(__pyx_v_self, (&__pyx_v_mdtype), (&__pyx_v_byte_count)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->cread_full_tag(__pyx_v_self, (&__pyx_v_mdtype), (&__pyx_v_byte_count)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":586
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":614
  *         # read full tag
  *         self.cread_full_tag(&mdtype, &byte_count)
  *         if mdtype != miMATRIX:             # <<<<<<<<<<<<<<
@@ -4119,29 +4385,29 @@
   __pyx_t_2 = (__pyx_v_mdtype != __pyx_e_5scipy_2io_6matlab_10mio5_utils_miMATRIX);
   if (__pyx_t_2) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":587
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":615
  *         self.cread_full_tag(&mdtype, &byte_count)
  *         if mdtype != miMATRIX:
  *             raise TypeError('Expecting matrix here')             # <<<<<<<<<<<<<<
  *         if byte_count == 0: # empty matrix
  *             if process and self.squeeze_me:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(((PyObject *)__pyx_kp_s_7));
-    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_7));
-    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_7));
-    __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_9));
+    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_9));
+    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_9));
+    __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L3;
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":588
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":616
  *         if mdtype != miMATRIX:
  *             raise TypeError('Expecting matrix here')
  *         if byte_count == 0: # empty matrix             # <<<<<<<<<<<<<<
@@ -4151,7 +4417,7 @@
   __pyx_t_2 = (__pyx_v_byte_count == 0);
   if (__pyx_t_2) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":589
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":617
  *             raise TypeError('Expecting matrix here')
  *         if byte_count == 0: # empty matrix
  *             if process and self.squeeze_me:             # <<<<<<<<<<<<<<
@@ -4165,7 +4431,7 @@
     }
     if (__pyx_t_2) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":590
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":618
  *         if byte_count == 0: # empty matrix
  *             if process and self.squeeze_me:
  *                 return np.array([])             # <<<<<<<<<<<<<<
@@ -4173,19 +4439,19 @@
  *                 return np.array([[]])
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(((PyObject *)__pyx_t_4));
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
       __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
       __pyx_t_4 = 0;
-      __pyx_t_4 = PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -4196,7 +4462,7 @@
     }
     /*else*/ {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":592
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":620
  *                 return np.array([])
  *             else:
  *                 return np.array([[]])             # <<<<<<<<<<<<<<
@@ -4204,24 +4470,24 @@
  *         return self.array_from_header(header, process)
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(((PyObject *)__pyx_t_4));
-      __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(((PyObject *)__pyx_t_3));
       PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
       __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
       __pyx_t_4 = 0;
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3));
       __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
       __pyx_t_3 = 0;
-      __pyx_t_3 = PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -4234,20 +4500,20 @@
   }
   __pyx_L4:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":593
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":621
  *             else:
  *                 return np.array([[]])
  *         header = self.read_header()             # <<<<<<<<<<<<<<
  *         return self.array_from_header(header, process)
  * 
  */
-  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_header(__pyx_v_self, 0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_header(__pyx_v_self, 0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(((PyObject *)__pyx_v_header));
   __pyx_v_header = ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":594
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":622
  *                 return np.array([[]])
  *         header = self.read_header()
  *         return self.array_from_header(header, process)             # <<<<<<<<<<<<<<
@@ -4257,7 +4523,7 @@
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_6.__pyx_n = 1;
   __pyx_t_6.process = __pyx_v_process;
-  __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->array_from_header(__pyx_v_self, __pyx_v_header, 0, &__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->array_from_header(__pyx_v_self, __pyx_v_header, 0, &__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -4278,7 +4544,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":596
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":624
  *         return self.array_from_header(header, process)
  * 
  *     cpdef array_from_header(self, VarHeader5 header, int process=1):             # <<<<<<<<<<<<<<
@@ -4312,13 +4578,13 @@
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overriden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__array_from_header); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__array_from_header); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5_array_from_header)) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_2 = PyInt_FromLong(__pyx_v_process); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyInt_FromLong(__pyx_v_process); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(((PyObject *)__pyx_v_header));
       PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_header));
@@ -4326,7 +4592,7 @@
       PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
       __Pyx_GIVEREF(__pyx_t_2);
       __pyx_t_2 = 0;
-      __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_r = __pyx_t_2;
@@ -4337,7 +4603,7 @@
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":614
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":642
  *             object arr
  *             cnp.dtype mat_dtype
  *         cdef int mc = header.mclass             # <<<<<<<<<<<<<<
@@ -4346,7 +4612,7 @@
  */
   __pyx_v_mc = __pyx_v_header->mclass;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":615
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":643
  *             cnp.dtype mat_dtype
  *         cdef int mc = header.mclass
  *         if (mc == mxDOUBLE_CLASS             # <<<<<<<<<<<<<<
@@ -4355,7 +4621,7 @@
  */
   switch (__pyx_v_mc) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":616
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":644
  *         cdef int mc = header.mclass
  *         if (mc == mxDOUBLE_CLASS
  *             or mc == mxSINGLE_CLASS             # <<<<<<<<<<<<<<
@@ -4364,7 +4630,7 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxDOUBLE_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":617
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":645
  *         if (mc == mxDOUBLE_CLASS
  *             or mc == mxSINGLE_CLASS
  *             or mc == mxINT8_CLASS             # <<<<<<<<<<<<<<
@@ -4373,7 +4639,7 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxSINGLE_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":618
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":646
  *             or mc == mxSINGLE_CLASS
  *             or mc == mxINT8_CLASS
  *             or mc == mxUINT8_CLASS             # <<<<<<<<<<<<<<
@@ -4382,7 +4648,7 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxINT8_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":619
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":647
  *             or mc == mxINT8_CLASS
  *             or mc == mxUINT8_CLASS
  *             or mc == mxINT16_CLASS             # <<<<<<<<<<<<<<
@@ -4391,7 +4657,7 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxUINT8_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":620
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":648
  *             or mc == mxUINT8_CLASS
  *             or mc == mxINT16_CLASS
  *             or mc == mxUINT16_CLASS             # <<<<<<<<<<<<<<
@@ -4400,7 +4666,7 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxINT16_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":621
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":649
  *             or mc == mxINT16_CLASS
  *             or mc == mxUINT16_CLASS
  *             or mc == mxINT32_CLASS             # <<<<<<<<<<<<<<
@@ -4409,7 +4675,7 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxUINT16_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":622
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":650
  *             or mc == mxUINT16_CLASS
  *             or mc == mxINT32_CLASS
  *             or mc == mxUINT32_CLASS             # <<<<<<<<<<<<<<
@@ -4418,7 +4684,7 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxINT32_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":623
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":651
  *             or mc == mxINT32_CLASS
  *             or mc == mxUINT32_CLASS
  *             or mc == mxINT64_CLASS             # <<<<<<<<<<<<<<
@@ -4427,7 +4693,7 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxUINT32_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":624
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":652
  *             or mc == mxUINT32_CLASS
  *             or mc == mxINT64_CLASS
  *             or mc == mxUINT64_CLASS): # numeric matrix             # <<<<<<<<<<<<<<
@@ -4437,20 +4703,20 @@
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxINT64_CLASS:
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxUINT64_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":625
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":653
  *             or mc == mxINT64_CLASS
  *             or mc == mxUINT64_CLASS): # numeric matrix
  *             arr = self.read_real_complex(header)             # <<<<<<<<<<<<<<
  *             if process and self.mat_dtype: # might need to recast
  *                 if header.is_logical:
  */
-    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_real_complex(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_real_complex(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_v_arr);
     __pyx_v_arr = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":626
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":654
  *             or mc == mxUINT64_CLASS): # numeric matrix
  *             arr = self.read_real_complex(header)
  *             if process and self.mat_dtype: # might need to recast             # <<<<<<<<<<<<<<
@@ -4464,7 +4730,7 @@
     }
     if (__pyx_t_4) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":627
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":655
  *             arr = self.read_real_complex(header)
  *             if process and self.mat_dtype: # might need to recast
  *                 if header.is_logical:             # <<<<<<<<<<<<<<
@@ -4473,7 +4739,7 @@
  */
       if (__pyx_v_header->is_logical) {
 
-        /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":628
+        /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":656
  *             if process and self.mat_dtype: # might need to recast
  *                 if header.is_logical:
  *                     mat_dtype = self.bool_dtype             # <<<<<<<<<<<<<<
@@ -4487,7 +4753,7 @@
       }
       /*else*/ {
 
-        /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":630
+        /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":658
  *                     mat_dtype = self.bool_dtype
  *                 else:
  *                     mat_dtype = <object>self.class_dtypes[mc]             # <<<<<<<<<<<<<<
@@ -4495,28 +4761,28 @@
  *         elif mc == mxSPARSE_CLASS:
  */
         __pyx_t_5 = (__pyx_v_self->class_dtypes[__pyx_v_mc]);
-        if (!(likely(((((PyObject *)__pyx_t_5)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_t_5), __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (!(likely(((((PyObject *)__pyx_t_5)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_t_5), __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_INCREF(((PyObject *)__pyx_t_5));
         __Pyx_DECREF(((PyObject *)__pyx_v_mat_dtype));
         __pyx_v_mat_dtype = ((PyArray_Descr *)((PyObject *)__pyx_t_5));
       }
       __pyx_L4:;
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":631
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":659
  *                 else:
  *                     mat_dtype = <object>self.class_dtypes[mc]
  *                 arr = arr.astype(mat_dtype)             # <<<<<<<<<<<<<<
  *         elif mc == mxSPARSE_CLASS:
  *             arr = self.read_sparse(header)
  */
-      __pyx_t_1 = PyObject_GetAttr(__pyx_v_arr, __pyx_n_s__astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyObject_GetAttr(__pyx_v_arr, __pyx_n_s__astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(((PyObject *)__pyx_v_mat_dtype));
       PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_mat_dtype));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_mat_dtype));
-      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -4528,7 +4794,7 @@
     __pyx_L3:;
     break;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":632
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":660
  *                     mat_dtype = <object>self.class_dtypes[mc]
  *                 arr = arr.astype(mat_dtype)
  *         elif mc == mxSPARSE_CLASS:             # <<<<<<<<<<<<<<
@@ -4537,20 +4803,20 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxSPARSE_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":633
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":661
  *                 arr = arr.astype(mat_dtype)
  *         elif mc == mxSPARSE_CLASS:
  *             arr = self.read_sparse(header)             # <<<<<<<<<<<<<<
  *             # no current processing makes sense for sparse
  *             return arr
  */
-    __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_sparse(__pyx_v_self, __pyx_v_header); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_sparse(__pyx_v_self, __pyx_v_header); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_v_arr);
     __pyx_v_arr = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":635
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":663
  *             arr = self.read_sparse(header)
  *             # no current processing makes sense for sparse
  *             return arr             # <<<<<<<<<<<<<<
@@ -4563,7 +4829,7 @@
     goto __pyx_L0;
     break;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":636
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":664
  *             # no current processing makes sense for sparse
  *             return arr
  *         elif mc == mxCHAR_CLASS:             # <<<<<<<<<<<<<<
@@ -4572,20 +4838,20 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxCHAR_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":637
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":665
  *             return arr
  *         elif mc == mxCHAR_CLASS:
  *             arr = self.read_char(header)             # <<<<<<<<<<<<<<
  *             if process and self.chars_as_strings:
  *                 arr = chars_to_strings(arr)
  */
-    __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_char(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_char(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_v_arr);
     __pyx_v_arr = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":638
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":666
  *         elif mc == mxCHAR_CLASS:
  *             arr = self.read_char(header)
  *             if process and self.chars_as_strings:             # <<<<<<<<<<<<<<
@@ -4599,21 +4865,21 @@
     }
     if (__pyx_t_4) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":639
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":667
  *             arr = self.read_char(header)
  *             if process and self.chars_as_strings:
  *                 arr = chars_to_strings(arr)             # <<<<<<<<<<<<<<
  *         elif mc == mxCELL_CLASS:
  *             arr = self.read_cells(header)
  */
-      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__chars_to_strings); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__chars_to_strings); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_v_arr);
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_arr);
       __Pyx_GIVEREF(__pyx_v_arr);
-      __pyx_t_1 = PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -4625,7 +4891,7 @@
     __pyx_L5:;
     break;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":640
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":668
  *             if process and self.chars_as_strings:
  *                 arr = chars_to_strings(arr)
  *         elif mc == mxCELL_CLASS:             # <<<<<<<<<<<<<<
@@ -4634,21 +4900,21 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxCELL_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":641
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":669
  *                 arr = chars_to_strings(arr)
  *         elif mc == mxCELL_CLASS:
  *             arr = self.read_cells(header)             # <<<<<<<<<<<<<<
  *         elif mc == mxSTRUCT_CLASS:
  *             arr = self.read_struct(header)
  */
-    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_cells(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_cells(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_v_arr);
     __pyx_v_arr = __pyx_t_1;
     __pyx_t_1 = 0;
     break;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":642
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":670
  *         elif mc == mxCELL_CLASS:
  *             arr = self.read_cells(header)
  *         elif mc == mxSTRUCT_CLASS:             # <<<<<<<<<<<<<<
@@ -4657,21 +4923,21 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxSTRUCT_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":643
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":671
  *             arr = self.read_cells(header)
  *         elif mc == mxSTRUCT_CLASS:
  *             arr = self.read_struct(header)             # <<<<<<<<<<<<<<
  *         elif mc == mxOBJECT_CLASS: # like structs, but with classname
  *             classname = asstr(self.read_int8_string())
  */
-    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_struct(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_struct(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_v_arr);
     __pyx_v_arr = __pyx_t_1;
     __pyx_t_1 = 0;
     break;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":644
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":672
  *         elif mc == mxSTRUCT_CLASS:
  *             arr = self.read_struct(header)
  *         elif mc == mxOBJECT_CLASS: # like structs, but with classname             # <<<<<<<<<<<<<<
@@ -4680,23 +4946,23 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxOBJECT_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":645
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":673
  *             arr = self.read_struct(header)
  *         elif mc == mxOBJECT_CLASS: # like structs, but with classname
  *             classname = asstr(self.read_int8_string())             # <<<<<<<<<<<<<<
  *             arr = self.read_struct(header)
  *             arr = mio5p.MatlabObject(arr, classname)
  */
-    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__asstr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__asstr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -4704,32 +4970,32 @@
     __pyx_v_classname = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":646
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":674
  *         elif mc == mxOBJECT_CLASS: # like structs, but with classname
  *             classname = asstr(self.read_int8_string())
  *             arr = self.read_struct(header)             # <<<<<<<<<<<<<<
  *             arr = mio5p.MatlabObject(arr, classname)
  *         elif mc == mxFUNCTION_CLASS: # just a matrix of struct type
  */
-    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_struct(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_struct(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_v_arr);
     __pyx_v_arr = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":647
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":675
  *             classname = asstr(self.read_int8_string())
  *             arr = self.read_struct(header)
  *             arr = mio5p.MatlabObject(arr, classname)             # <<<<<<<<<<<<<<
  *         elif mc == mxFUNCTION_CLASS: # just a matrix of struct type
  *             arr = self.read_mi_matrix()
  */
-    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__MatlabObject); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__MatlabObject); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_arr);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_arr);
@@ -4737,7 +5003,7 @@
     __Pyx_INCREF(__pyx_v_classname);
     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_classname);
     __Pyx_GIVEREF(__pyx_v_classname);
-    __pyx_t_1 = PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -4746,7 +5012,7 @@
     __pyx_t_1 = 0;
     break;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":648
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":676
  *             arr = self.read_struct(header)
  *             arr = mio5p.MatlabObject(arr, classname)
  *         elif mc == mxFUNCTION_CLASS: # just a matrix of struct type             # <<<<<<<<<<<<<<
@@ -4755,37 +5021,37 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxFUNCTION_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":649
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":677
  *             arr = mio5p.MatlabObject(arr, classname)
  *         elif mc == mxFUNCTION_CLASS: # just a matrix of struct type
  *             arr = self.read_mi_matrix()             # <<<<<<<<<<<<<<
  *             arr = mio5p.MatlabFunction(arr)
  *             # to make them more re-writeable - don't squeeze
  */
-    __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_mi_matrix(__pyx_v_self, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_mi_matrix(__pyx_v_self, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_v_arr);
     __pyx_v_arr = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":650
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":678
  *         elif mc == mxFUNCTION_CLASS: # just a matrix of struct type
  *             arr = self.read_mi_matrix()
  *             arr = mio5p.MatlabFunction(arr)             # <<<<<<<<<<<<<<
  *             # to make them more re-writeable - don't squeeze
  *             return arr
  */
-    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__MatlabFunction); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__MatlabFunction); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_arr);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_arr);
     __Pyx_GIVEREF(__pyx_v_arr);
-    __pyx_t_3 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -4793,7 +5059,7 @@
     __pyx_v_arr = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":652
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":680
  *             arr = mio5p.MatlabFunction(arr)
  *             # to make them more re-writeable - don't squeeze
  *             return arr             # <<<<<<<<<<<<<<
@@ -4806,7 +5072,7 @@
     goto __pyx_L0;
     break;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":653
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":681
  *             # to make them more re-writeable - don't squeeze
  *             return arr
  *         elif mc == mxOPAQUE_CLASS:             # <<<<<<<<<<<<<<
@@ -4815,37 +5081,37 @@
  */
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_mxOPAQUE_CLASS:
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":654
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":682
  *             return arr
  *         elif mc == mxOPAQUE_CLASS:
  *             arr = self.read_opaque(header)             # <<<<<<<<<<<<<<
  *             arr = mio5p.MatlabOpaque(arr)
  *             # to make them more re-writeable - don't squeeze
  */
-    __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_opaque(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_opaque(__pyx_v_self, __pyx_v_header, 0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_v_arr);
     __pyx_v_arr = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":655
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":683
  *         elif mc == mxOPAQUE_CLASS:
  *             arr = self.read_opaque(header)
  *             arr = mio5p.MatlabOpaque(arr)             # <<<<<<<<<<<<<<
  *             # to make them more re-writeable - don't squeeze
  *             return arr
  */
-    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__MatlabOpaque); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__MatlabOpaque); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_arr);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arr);
     __Pyx_GIVEREF(__pyx_v_arr);
-    __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -4853,7 +5119,7 @@
     __pyx_v_arr = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":657
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":685
  *             arr = mio5p.MatlabOpaque(arr)
  *             # to make them more re-writeable - don't squeeze
  *             return arr             # <<<<<<<<<<<<<<
@@ -4867,7 +5133,7 @@
     break;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":658
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":686
  *             # to make them more re-writeable - don't squeeze
  *             return arr
  *         if process and self.squeeze_me:             # <<<<<<<<<<<<<<
@@ -4881,7 +5147,7 @@
   }
   if (__pyx_t_4) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":659
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":687
  *             return arr
  *         if process and self.squeeze_me:
  *             return squeeze_element(arr)             # <<<<<<<<<<<<<<
@@ -4889,14 +5155,14 @@
  * 
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__squeeze_element); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__squeeze_element); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_arr);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arr);
     __Pyx_GIVEREF(__pyx_v_arr);
-    __pyx_t_1 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -4907,7 +5173,7 @@
   }
   __pyx_L6:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":660
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":688
  *         if process and self.squeeze_me:
  *             return squeeze_element(arr)
  *         return arr             # <<<<<<<<<<<<<<
@@ -4936,7 +5202,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":596
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":624
  *         return self.array_from_header(header, process)
  * 
  *     cpdef array_from_header(self, VarHeader5 header, int process=1):             # <<<<<<<<<<<<<<
@@ -4975,18 +5241,18 @@
       }
     }
     if (unlikely(kw_args > 0)) {
-      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "array_from_header") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "array_from_header") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     }
     __pyx_v_header = ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)values[0]);
     if (values[1]) {
-      __pyx_v_process = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_process == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_process = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_process == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     } else {
       __pyx_v_process = ((int)1);
     }
   } else {
     __pyx_v_process = ((int)1);
     switch (PyTuple_GET_SIZE(__pyx_args)) {
-      case  2: __pyx_v_process = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_process == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      case  2: __pyx_v_process = __Pyx_PyInt_AsInt(PyTuple_GET_ITEM(__pyx_args, 1)); if (unlikely((__pyx_v_process == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       case  1: __pyx_v_header = ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)PyTuple_GET_ITEM(__pyx_args, 0));
       break;
       default: goto __pyx_L5_argtuple_error;
@@ -4994,17 +5260,17 @@
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("array_from_header", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("array_from_header", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("scipy.io.matlab.mio5_utils.VarReader5.array_from_header");
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_header), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "header", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_header), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "header", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.process = __pyx_v_process;
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->array_from_header(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), __pyx_v_header, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->array_from_header(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), __pyx_v_header, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5022,7 +5288,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":662
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":690
  *         return arr
  * 
  *     cpdef cnp.ndarray read_real_complex(self, VarHeader5 header):             # <<<<<<<<<<<<<<
@@ -5046,19 +5312,19 @@
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overriden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_real_complex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_real_complex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_real_complex)) {
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(((PyObject *)__pyx_v_header));
       PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_header));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_header));
-      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = ((PyArrayObject *)__pyx_t_3);
       __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5067,7 +5333,7 @@
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":666
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":694
  *         cdef:
  *             cnp.ndarray res, res_j
  *         if header.is_complex:             # <<<<<<<<<<<<<<
@@ -5076,7 +5342,7 @@
  */
   if (__pyx_v_header->is_complex) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":668
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":696
  *         if header.is_complex:
  *             # avoid array copy to save memory
  *             res = self.read_numeric(False)             # <<<<<<<<<<<<<<
@@ -5085,13 +5351,13 @@
  */
     __pyx_t_4.__pyx_n = 1;
     __pyx_t_4.copy = 0;
-    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, &__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, &__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(((PyObject *)__pyx_v_res));
     __pyx_v_res = ((PyArrayObject *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":669
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":697
  *             # avoid array copy to save memory
  *             res = self.read_numeric(False)
  *             res_j = self.read_numeric(False)             # <<<<<<<<<<<<<<
@@ -5100,28 +5366,28 @@
  */
     __pyx_t_4.__pyx_n = 1;
     __pyx_t_4.copy = 0;
-    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, &__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, &__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(((PyObject *)__pyx_v_res_j));
     __pyx_v_res_j = ((PyArrayObject *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":670
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":698
  *             res = self.read_numeric(False)
  *             res_j = self.read_numeric(False)
  *             res = res + (res_j * 1j)             # <<<<<<<<<<<<<<
  *         else:
  *             res = self.read_numeric()
  */
-    __pyx_t_1 = PyComplex_FromDoubles(0.0, 1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyComplex_FromDoubles(0.0, 1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_res_j), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_res_j), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_res), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_res), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(((PyObject *)__pyx_v_res));
     __pyx_v_res = ((PyArrayObject *)__pyx_t_1);
     __pyx_t_1 = 0;
@@ -5129,14 +5395,14 @@
   }
   /*else*/ {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":672
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":700
  *             res = res + (res_j * 1j)
  *         else:
  *             res = self.read_numeric()             # <<<<<<<<<<<<<<
  *         return res.reshape(header.dims[::-1]).T
  * 
  */
-    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(((PyObject *)__pyx_v_res));
     __pyx_v_res = ((PyArrayObject *)__pyx_t_1);
@@ -5144,7 +5410,7 @@
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":673
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":701
  *         else:
  *             res = self.read_numeric()
  *         return res.reshape(header.dims[::-1]).T             # <<<<<<<<<<<<<<
@@ -5152,26 +5418,26 @@
  *     cdef object read_sparse(self, VarHeader5 header):
  */
   __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_res), __pyx_n_s__reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_res), __pyx_n_s__reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyObject_GetItem(__pyx_v_header->dims, __pyx_t_3); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetItem(__pyx_v_header->dims, __pyx_t_3); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__T); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__T); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = ((PyArrayObject *)__pyx_t_3);
   __pyx_t_3 = 0;
   goto __pyx_L0;
@@ -5192,7 +5458,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":662
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":690
  *         return arr
  * 
  *     cpdef cnp.ndarray read_real_complex(self, VarHeader5 header):             # <<<<<<<<<<<<<<
@@ -5206,9 +5472,9 @@
   PyObject *__pyx_r = NULL;
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("read_real_complex");
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_header), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "header", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_header), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "header", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_real_complex(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_header), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_real_complex(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_header), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5226,7 +5492,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":675
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":703
  *         return res.reshape(header.dims[::-1]).T
  * 
  *     cdef object read_sparse(self, VarHeader5 header):             # <<<<<<<<<<<<<<
@@ -5258,33 +5524,33 @@
   __pyx_v_data = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_data_j = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":679
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":707
  *         cdef cnp.ndarray rowind, indptr, data, data_j
  *         cdef size_t M, N, nnz
  *         rowind = self.read_numeric()             # <<<<<<<<<<<<<<
  *         indptr = self.read_numeric()
  *         if header.is_complex:
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(((PyObject *)__pyx_v_rowind));
   __pyx_v_rowind = ((PyArrayObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":680
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":708
  *         cdef size_t M, N, nnz
  *         rowind = self.read_numeric()
  *         indptr = self.read_numeric()             # <<<<<<<<<<<<<<
  *         if header.is_complex:
  *             # avoid array copy to save memory
  */
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(((PyObject *)__pyx_v_indptr));
   __pyx_v_indptr = ((PyArrayObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":681
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":709
  *         rowind = self.read_numeric()
  *         indptr = self.read_numeric()
  *         if header.is_complex:             # <<<<<<<<<<<<<<
@@ -5293,7 +5559,7 @@
  */
   if (__pyx_v_header->is_complex) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":683
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":711
  *         if header.is_complex:
  *             # avoid array copy to save memory
  *             data   = self.read_numeric(False)             # <<<<<<<<<<<<<<
@@ -5302,13 +5568,13 @@
  */
     __pyx_t_2.__pyx_n = 1;
     __pyx_t_2.copy = 0;
-    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(((PyObject *)__pyx_v_data));
     __pyx_v_data = ((PyArrayObject *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":684
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":712
  *             # avoid array copy to save memory
  *             data   = self.read_numeric(False)
  *             data_j = self.read_numeric(False)             # <<<<<<<<<<<<<<
@@ -5317,28 +5583,28 @@
  */
     __pyx_t_2.__pyx_n = 1;
     __pyx_t_2.copy = 0;
-    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(((PyObject *)__pyx_v_data_j));
     __pyx_v_data_j = ((PyArrayObject *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":685
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":713
  *             data   = self.read_numeric(False)
  *             data_j = self.read_numeric(False)
  *             data = data + (data_j * 1j)             # <<<<<<<<<<<<<<
  *         else:
  *             data = self.read_numeric()
  */
-    __pyx_t_1 = PyComplex_FromDoubles(0.0, 1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyComplex_FromDoubles(0.0, 1.0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_data_j), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_data_j), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_data), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_data), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(((PyObject *)__pyx_v_data));
     __pyx_v_data = ((PyArrayObject *)__pyx_t_1);
     __pyx_t_1 = 0;
@@ -5346,14 +5612,14 @@
   }
   /*else*/ {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":687
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":715
  *             data = data + (data_j * 1j)
  *         else:
  *             data = self.read_numeric()             # <<<<<<<<<<<<<<
  *         ''' From the matlab (TM) API documentation, last found here:
  *         http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/
  */
-    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_numeric(__pyx_v_self, 0, NULL)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(((PyObject *)__pyx_v_data));
     __pyx_v_data = ((PyArrayObject *)__pyx_t_1);
@@ -5361,7 +5627,7 @@
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":700
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":728
  *         to each rowind
  *         '''
  *         M,N = header.dims             # <<<<<<<<<<<<<<
@@ -5371,86 +5637,86 @@
   if (PyTuple_CheckExact(__pyx_v_header->dims) && likely(PyTuple_GET_SIZE(__pyx_v_header->dims) == 2)) {
     PyObject* tuple = __pyx_v_header->dims;
     __pyx_t_1 = PyTuple_GET_ITEM(tuple, 0); __Pyx_INCREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyInt_AsSize_t(__pyx_t_1); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyInt_AsSize_t(__pyx_t_1); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_3 = PyTuple_GET_ITEM(tuple, 1); __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_5 = __Pyx_PyInt_AsSize_t(__pyx_t_3); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyInt_AsSize_t(__pyx_t_3); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_M = __pyx_t_4;
     __pyx_v_N = __pyx_t_5;
   } else {
-    __pyx_t_6 = PyObject_GetIter(__pyx_v_header->dims); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyObject_GetIter(__pyx_v_header->dims); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_1 = __Pyx_UnpackItem(__pyx_t_6, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_UnpackItem(__pyx_t_6, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyInt_AsSize_t(__pyx_t_1); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyInt_AsSize_t(__pyx_t_1); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_6, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_UnpackItem(__pyx_t_6, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyInt_AsSize_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyInt_AsSize_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (__Pyx_EndUnpack(__pyx_t_6, 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_EndUnpack(__pyx_t_6, 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_v_M = __pyx_t_5;
     __pyx_v_N = __pyx_t_4;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":701
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":729
  *         '''
  *         M,N = header.dims
  *         indptr = indptr[:N+1]             # <<<<<<<<<<<<<<
  *         nnz = indptr[-1]
  *         rowind = rowind[:nnz]
  */
-  __pyx_t_3 = PySequence_GetSlice(((PyObject *)__pyx_v_indptr), 0, (__pyx_v_N + 1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PySequence_GetSlice(((PyObject *)__pyx_v_indptr), 0, (__pyx_v_N + 1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(((PyObject *)__pyx_v_indptr));
   __pyx_v_indptr = ((PyArrayObject *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":702
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":730
  *         M,N = header.dims
  *         indptr = indptr[:N+1]
  *         nnz = indptr[-1]             # <<<<<<<<<<<<<<
  *         rowind = rowind[:nnz]
  *         data   = data[:nnz]
  */
-  __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_indptr), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_indptr), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyInt_AsSize_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_AsSize_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_nnz = __pyx_t_4;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":703
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":731
  *         indptr = indptr[:N+1]
  *         nnz = indptr[-1]
  *         rowind = rowind[:nnz]             # <<<<<<<<<<<<<<
  *         data   = data[:nnz]
  *         return scipy.sparse.csc_matrix(
  */
-  __pyx_t_3 = PySequence_GetSlice(((PyObject *)__pyx_v_rowind), 0, __pyx_v_nnz); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PySequence_GetSlice(((PyObject *)__pyx_v_rowind), 0, __pyx_v_nnz); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(((PyObject *)__pyx_v_rowind));
   __pyx_v_rowind = ((PyArrayObject *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":704
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":732
  *         nnz = indptr[-1]
  *         rowind = rowind[:nnz]
  *         data   = data[:nnz]             # <<<<<<<<<<<<<<
  *         return scipy.sparse.csc_matrix(
  *             (data,rowind,indptr),
  */
-  __pyx_t_3 = PySequence_GetSlice(((PyObject *)__pyx_v_data), 0, __pyx_v_nnz); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PySequence_GetSlice(((PyObject *)__pyx_v_data), 0, __pyx_v_nnz); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(((PyObject *)__pyx_v_data));
   __pyx_v_data = ((PyArrayObject *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":705
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":733
  *         rowind = rowind[:nnz]
  *         data   = data[:nnz]
  *         return scipy.sparse.csc_matrix(             # <<<<<<<<<<<<<<
@@ -5458,23 +5724,23 @@
  *             shape=(M,N))
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__scipy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__scipy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__sparse); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__sparse); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__csc_matrix); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__csc_matrix); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":706
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":734
  *         data   = data[:nnz]
  *         return scipy.sparse.csc_matrix(
  *             (data,rowind,indptr),             # <<<<<<<<<<<<<<
  *             shape=(M,N))
  * 
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_data));
   PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_data));
@@ -5485,34 +5751,34 @@
   __Pyx_INCREF(((PyObject *)__pyx_v_indptr));
   PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_indptr));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_indptr));
-  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":705
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":733
  *         rowind = rowind[:nnz]
  *         data   = data[:nnz]
  *         return scipy.sparse.csc_matrix(             # <<<<<<<<<<<<<<
  *             (data,rowind,indptr),
  *             shape=(M,N))
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":707
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":735
  *         return scipy.sparse.csc_matrix(
  *             (data,rowind,indptr),
  *             shape=(M,N))             # <<<<<<<<<<<<<<
  * 
  *     cpdef cnp.ndarray read_char(self, VarHeader5 header):
  */
-  __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_M); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_FromSize_t(__pyx_v_M); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = __Pyx_PyInt_FromSize_t(__pyx_v_N); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyInt_FromSize_t(__pyx_v_N); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7);
   __Pyx_GIVEREF(__pyx_t_7);
@@ -5520,9 +5786,9 @@
   __Pyx_GIVEREF(__pyx_t_8);
   __pyx_t_7 = 0;
   __pyx_t_8 = 0;
-  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__shape), __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__shape), __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __pyx_t_9 = PyEval_CallObjectWithKeywords(__pyx_t_3, __pyx_t_6, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyEval_CallObjectWithKeywords(__pyx_t_3, __pyx_t_6, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -5552,7 +5818,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":709
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":737
  *             shape=(M,N))
  * 
  *     cpdef cnp.ndarray read_char(self, VarHeader5 header):             # <<<<<<<<<<<<<<
@@ -5568,40 +5834,41 @@
   PyObject *__pyx_v_data;
   PyObject *__pyx_v_codec;
   PyArrayObject *__pyx_v_arr;
+  PyArray_Descr *__pyx_v_dt;
   size_t __pyx_v_length;
-  PyArray_Descr *__pyx_v_dt = 0;
   PyObject *__pyx_v_uc_str;
   PyArrayObject *__pyx_r = NULL;
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   struct __pyx_opt_args_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_element __pyx_t_4;
-  PyObject *__pyx_t_5;
-  int __pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7;
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("read_char");
   __pyx_v_data = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_codec = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_arr = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
+  __pyx_v_dt = ((PyArray_Descr *)Py_None); __Pyx_INCREF(Py_None);
   __pyx_v_uc_str = Py_None; __Pyx_INCREF(Py_None);
   /* Check if called by wrapper */
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overriden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_char); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_char); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_char)) {
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(((PyObject *)__pyx_v_header));
       PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_header));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_header));
-      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = ((PyArrayObject *)__pyx_t_3);
       __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -5610,53 +5877,146 @@
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":735
- *             object data, res, codec
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":764
  *             cnp.ndarray arr
+ *             cnp.dtype dt
  *         cdef size_t length = self.size_from_header(header)             # <<<<<<<<<<<<<<
  *         data = self.read_element(
  *             &mdtype, &byte_count, <void **>&data_ptr, True)
  */
   __pyx_v_length = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->size_from_header(__pyx_v_self, __pyx_v_header);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":737
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":766
  *         cdef size_t length = self.size_from_header(header)
  *         data = self.read_element(
  *             &mdtype, &byte_count, <void **>&data_ptr, True)             # <<<<<<<<<<<<<<
- *         # Character data can be of apparently numerical types,
- *         # specifically np.uint8, np.int8, np.uint16.  np.unit16 can have
+ *         # There are mat files in the wild that have 0 byte count strings, but
+ *         # maybe with non-zero length.
  */
   __pyx_t_4.__pyx_n = 1;
   __pyx_t_4.copy = 1;
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_element(__pyx_v_self, (&__pyx_v_mdtype), (&__pyx_v_byte_count), ((void **)(&__pyx_v_data_ptr)), &__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_element(__pyx_v_self, (&__pyx_v_mdtype), (&__pyx_v_byte_count), ((void **)(&__pyx_v_data_ptr)), &__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_v_data);
   __pyx_v_data = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":742
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":769
+ *         # There are mat files in the wild that have 0 byte count strings, but
+ *         # maybe with non-zero length.
+ *         if byte_count == 0:             # <<<<<<<<<<<<<<
+ *             arr = np.array(' ' * length, dtype='U')
+ *             return np.ndarray(shape=header.dims,
+ */
+  __pyx_t_5 = (__pyx_v_byte_count == 0);
+  if (__pyx_t_5) {
+
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":770
+ *         # maybe with non-zero length.
+ *         if byte_count == 0:
+ *             arr = np.array(' ' * length, dtype='U')             # <<<<<<<<<<<<<<
+ *             return np.ndarray(shape=header.dims,
+ *                               dtype=self.U1_dtype,
+ */
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyNumber_Multiply(((PyObject *)__pyx_kp_s_2), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_2));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
+    __pyx_t_2 = 0;
+    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__U)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(((PyObject *)__pyx_v_arr));
+    __pyx_v_arr = ((PyArrayObject *)__pyx_t_6);
+    __pyx_t_6 = 0;
+
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":771
+ *         if byte_count == 0:
+ *             arr = np.array(' ' * length, dtype='U')
+ *             return np.ndarray(shape=header.dims,             # <<<<<<<<<<<<<<
+ *                               dtype=self.U1_dtype,
+ *                               buffer=arr,
+ */
+    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ndarray); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
+    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__shape), __pyx_v_header->dims) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":772
+ *             arr = np.array(' ' * length, dtype='U')
+ *             return np.ndarray(shape=header.dims,
+ *                               dtype=self.U1_dtype,             # <<<<<<<<<<<<<<
+ *                               buffer=arr,
+ *                               order='F')
+ */
+    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_v_self->U1_dtype)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":773
+ *             return np.ndarray(shape=header.dims,
+ *                               dtype=self.U1_dtype,
+ *                               buffer=arr,             # <<<<<<<<<<<<<<
+ *                               order='F')
+ *         # Character data can be of apparently numerical types,
+ */
+    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__buffer), ((PyObject *)__pyx_v_arr)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_s__F)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_r = ((PyArrayObject *)__pyx_t_1);
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":779
  *         # a length 1 type encoding, like ascii, or length 2 type
  *         # encoding
- *         cdef cnp.dtype dt = <cnp.dtype>self.dtypes[mdtype]             # <<<<<<<<<<<<<<
+ *         dt = <cnp.dtype>self.dtypes[mdtype]             # <<<<<<<<<<<<<<
  *         if mdtype == miUINT16:
  *             codec = self.uint16_codec
  */
-  __pyx_t_5 = (__pyx_v_self->dtypes[__pyx_v_mdtype]);
-  __Pyx_INCREF(((PyObject *)((PyArray_Descr *)__pyx_t_5)));
-  __pyx_v_dt = ((PyArray_Descr *)__pyx_t_5);
+  __pyx_t_7 = (__pyx_v_self->dtypes[__pyx_v_mdtype]);
+  __Pyx_INCREF(((PyObject *)((PyArray_Descr *)__pyx_t_7)));
+  __Pyx_DECREF(((PyObject *)__pyx_v_dt));
+  __pyx_v_dt = ((PyArray_Descr *)__pyx_t_7);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":743
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":780
  *         # encoding
- *         cdef cnp.dtype dt = <cnp.dtype>self.dtypes[mdtype]
+ *         dt = <cnp.dtype>self.dtypes[mdtype]
  *         if mdtype == miUINT16:             # <<<<<<<<<<<<<<
  *             codec = self.uint16_codec
  *             if self.codecs['uint16_len'] == 1: # need LSBs only
  */
-  __pyx_t_6 = (__pyx_v_mdtype == __pyx_e_5scipy_2io_6matlab_10mio5_utils_miUINT16);
-  if (__pyx_t_6) {
+  __pyx_t_5 = (__pyx_v_mdtype == __pyx_e_5scipy_2io_6matlab_10mio5_utils_miUINT16);
+  if (__pyx_t_5) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":744
- *         cdef cnp.dtype dt = <cnp.dtype>self.dtypes[mdtype]
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":781
+ *         dt = <cnp.dtype>self.dtypes[mdtype]
  *         if mdtype == miUINT16:
  *             codec = self.uint16_codec             # <<<<<<<<<<<<<<
  *             if self.codecs['uint16_len'] == 1: # need LSBs only
@@ -5666,111 +6026,111 @@
     __Pyx_DECREF(__pyx_v_codec);
     __pyx_v_codec = __pyx_v_self->uint16_codec;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":745
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":782
  *         if mdtype == miUINT16:
  *             codec = self.uint16_codec
  *             if self.codecs['uint16_len'] == 1: # need LSBs only             # <<<<<<<<<<<<<<
  *                 arr = np.ndarray(shape=(length,),
  *                                   dtype=dt,
  */
-    __pyx_t_1 = PyObject_GetItem(__pyx_v_self->codecs, ((PyObject *)__pyx_n_s__uint16_len)); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetItem(__pyx_v_self->codecs, ((PyObject *)__pyx_n_s__uint16_len)); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_int_1, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_int_1, Py_EQ); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (__pyx_t_6) {
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (__pyx_t_5) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":746
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":783
  *             codec = self.uint16_codec
  *             if self.codecs['uint16_len'] == 1: # need LSBs only
  *                 arr = np.ndarray(shape=(length,),             # <<<<<<<<<<<<<<
  *                                   dtype=dt,
  *                                   buffer=data)
  */
-      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ndarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__ndarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
-      __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
+      __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
       __Pyx_GIVEREF(__pyx_t_2);
       __pyx_t_2 = 0;
-      if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__shape), __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__shape), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":747
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":784
  *             if self.codecs['uint16_len'] == 1: # need LSBs only
  *                 arr = np.ndarray(shape=(length,),
  *                                   dtype=dt,             # <<<<<<<<<<<<<<
  *                                   buffer=data)
  *                 data = arr.astype(np.uint8).tostring()
  */
-      if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_v_dt)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_v_dt)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":748
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":785
  *                 arr = np.ndarray(shape=(length,),
  *                                   dtype=dt,
  *                                   buffer=data)             # <<<<<<<<<<<<<<
  *                 data = arr.astype(np.uint8).tostring()
  *         elif mdtype == miINT8 or mdtype == miUINT8:
  */
-      if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__buffer), __pyx_v_data) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_7 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
+      if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__buffer), __pyx_v_data) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(((PyObject *)__pyx_v_arr));
-      __pyx_v_arr = ((PyArrayObject *)__pyx_t_7);
-      __pyx_t_7 = 0;
+      __pyx_v_arr = ((PyArrayObject *)__pyx_t_3);
+      __pyx_t_3 = 0;
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":749
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":786
  *                                   dtype=dt,
  *                                   buffer=data)
  *                 data = arr.astype(np.uint8).tostring()             # <<<<<<<<<<<<<<
  *         elif mdtype == miINT8 or mdtype == miUINT8:
  *             codec = 'ascii'
  */
-      __pyx_t_7 = PyObject_GetAttr(((PyObject *)__pyx_v_arr), __pyx_n_s__astype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_arr), __pyx_n_s__astype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__uint8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__uint8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __pyx_t_1 = 0;
-      __pyx_t_1 = PyObject_Call(__pyx_t_7, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__tostring); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __pyx_t_6 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__tostring); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_v_data);
       __pyx_v_data = __pyx_t_1;
       __pyx_t_1 = 0;
-      goto __pyx_L4;
+      goto __pyx_L5;
     }
-    __pyx_L4:;
-    goto __pyx_L3;
+    __pyx_L5:;
+    goto __pyx_L4;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":750
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":787
  *                                   buffer=data)
  *                 data = arr.astype(np.uint8).tostring()
  *         elif mdtype == miINT8 or mdtype == miUINT8:             # <<<<<<<<<<<<<<
@@ -5780,15 +6140,15 @@
   switch (__pyx_v_mdtype) {
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_miINT8:
     case __pyx_e_5scipy_2io_6matlab_10mio5_utils_miUINT8:
-    __pyx_t_6 = 1;
+    __pyx_t_5 = 1;
     break;
     default:
-    __pyx_t_6 = 0;
+    __pyx_t_5 = 0;
     break;
   }
-  if (__pyx_t_6) {
+  if (__pyx_t_5) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":751
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":788
  *                 data = arr.astype(np.uint8).tostring()
  *         elif mdtype == miINT8 or mdtype == miUINT8:
  *             codec = 'ascii'             # <<<<<<<<<<<<<<
@@ -5798,207 +6158,196 @@
     __Pyx_INCREF(((PyObject *)__pyx_n_s__ascii));
     __Pyx_DECREF(__pyx_v_codec);
     __pyx_v_codec = ((PyObject *)__pyx_n_s__ascii);
-    goto __pyx_L3;
+    goto __pyx_L4;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":752
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":789
  *         elif mdtype == miINT8 or mdtype == miUINT8:
  *             codec = 'ascii'
  *         elif mdtype in self.codecs: # encoded char data             # <<<<<<<<<<<<<<
  *             codec = self.codecs[mdtype]
  *             if not codec:
  */
-  __pyx_t_1 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_mdtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_mdtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = ((PySequence_Contains(__pyx_v_self->codecs, __pyx_t_1))); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = ((PySequence_Contains(__pyx_v_self->codecs, __pyx_t_1))); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__pyx_t_6) {
+  if (__pyx_t_5) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":753
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":790
  *             codec = 'ascii'
  *         elif mdtype in self.codecs: # encoded char data
  *             codec = self.codecs[mdtype]             # <<<<<<<<<<<<<<
  *             if not codec:
  *                 raise TypeError('Do not support encoding %d' % mdtype)
  */
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self->codecs, __pyx_v_mdtype, sizeof(__pyx_t_5numpy_uint32_t)+1, __Pyx_PyInt_to_py_npy_uint32); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self->codecs, __pyx_v_mdtype, sizeof(__pyx_t_5numpy_uint32_t)+1, __Pyx_PyInt_to_py_npy_uint32); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_v_codec);
     __pyx_v_codec = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":754
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":791
  *         elif mdtype in self.codecs: # encoded char data
  *             codec = self.codecs[mdtype]
  *             if not codec:             # <<<<<<<<<<<<<<
  *                 raise TypeError('Do not support encoding %d' % mdtype)
  *         else:
  */
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_codec); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_8 = (!__pyx_t_6);
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_codec); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (!__pyx_t_5);
     if (__pyx_t_8) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":755
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":792
  *             codec = self.codecs[mdtype]
  *             if not codec:
  *                 raise TypeError('Do not support encoding %d' % mdtype)             # <<<<<<<<<<<<<<
  *         else:
  *             raise ValueError('Type %d does not appear to be char type'
  */
-      __pyx_t_1 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_mdtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_mdtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_8), __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_3));
-      __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
-      __pyx_t_3 = 0;
-      __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_6));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
+      __pyx_t_6 = 0;
+      __pyx_t_6 = PyObject_Call(__pyx_builtin_TypeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __Pyx_Raise(__pyx_t_3, 0, 0);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      goto __pyx_L5;
+      __Pyx_Raise(__pyx_t_6, 0, 0);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L6;
     }
-    __pyx_L5:;
-    goto __pyx_L3;
+    __pyx_L6:;
+    goto __pyx_L4;
   }
   /*else*/ {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":758
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":795
  *         else:
  *             raise ValueError('Type %d does not appear to be char type'
  *                              % mdtype)             # <<<<<<<<<<<<<<
  *         uc_str = data.decode(codec)
  *         # cast to array to deal with 2, 4 byte width characters
  */
-    __pyx_t_3 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_mdtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_9), __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyInt_to_py_npy_uint32(__pyx_v_mdtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_11), __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(((PyObject *)__pyx_t_1));
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_1));
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_1));
     __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
     __pyx_t_1 = 0;
-    __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_L3:;
+  __pyx_L4:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":759
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":796
  *             raise ValueError('Type %d does not appear to be char type'
  *                              % mdtype)
  *         uc_str = data.decode(codec)             # <<<<<<<<<<<<<<
  *         # cast to array to deal with 2, 4 byte width characters
  *         arr = np.array(uc_str, dtype='U')
  */
-  __pyx_t_1 = PyObject_GetAttr(__pyx_v_data, __pyx_n_s__decode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_data, __pyx_n_s__decode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
   __Pyx_INCREF(__pyx_v_codec);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_codec);
+  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_codec);
   __Pyx_GIVEREF(__pyx_v_codec);
-  __pyx_t_7 = PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_v_uc_str);
-  __pyx_v_uc_str = __pyx_t_7;
-  __pyx_t_7 = 0;
+  __pyx_v_uc_str = __pyx_t_3;
+  __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":761
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":798
  *         uc_str = data.decode(codec)
  *         # cast to array to deal with 2, 4 byte width characters
  *         arr = np.array(uc_str, dtype='U')             # <<<<<<<<<<<<<<
- *         dt = self.U1_dtype
  *         # could take this to numpy C-API level, but probably not worth
+ *         # it
  */
-  __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_6 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__array); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_uc_str);
-  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_uc_str);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_uc_str);
   __Pyx_GIVEREF(__pyx_v_uc_str);
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
-  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__U)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_t_3, __pyx_t_7, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_n_s__U)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyEval_CallObjectWithKeywords(__pyx_t_6, __pyx_t_3, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(((PyObject *)__pyx_v_arr));
   __pyx_v_arr = ((PyArrayObject *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":762
- *         # cast to array to deal with 2, 4 byte width characters
- *         arr = np.array(uc_str, dtype='U')
- *         dt = self.U1_dtype             # <<<<<<<<<<<<<<
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":801
  *         # could take this to numpy C-API level, but probably not worth
  *         # it
- */
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->U1_dtype));
-  __Pyx_DECREF(((PyObject *)__pyx_v_dt));
-  __pyx_v_dt = __pyx_v_self->U1_dtype;
-
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":765
- *         # could take this to numpy C-API level, but probably not worth
- *         # it
  *         return np.ndarray(shape=header.dims,             # <<<<<<<<<<<<<<
- *                           dtype=dt,
+ *                           dtype=self.U1_dtype,
  *                           buffer=arr,
  */
   __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__ndarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__ndarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__shape), __pyx_v_header->dims) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__shape), __pyx_v_header->dims) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":766
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":802
  *         # it
  *         return np.ndarray(shape=header.dims,
- *                           dtype=dt,             # <<<<<<<<<<<<<<
+ *                           dtype=self.U1_dtype,             # <<<<<<<<<<<<<<
  *                           buffer=arr,
  *                           order='F')
  */
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_v_dt)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_v_self->U1_dtype)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":767
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":803
  *         return np.ndarray(shape=header.dims,
- *                           dtype=dt,
+ *                           dtype=self.U1_dtype,
  *                           buffer=arr,             # <<<<<<<<<<<<<<
  *                           order='F')
  * 
  */
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__buffer), ((PyObject *)__pyx_v_arr)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_s__F)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_7 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__buffer), ((PyObject *)__pyx_v_arr)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_s__F)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = ((PyArrayObject *)__pyx_t_7);
-  __pyx_t_7 = 0;
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = ((PyArrayObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
   goto __pyx_L0;
 
   __pyx_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
@@ -6007,21 +6356,21 @@
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_6);
   __Pyx_AddTraceback("scipy.io.matlab.mio5_utils.VarReader5.read_char");
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_DECREF(__pyx_v_data);
   __Pyx_DECREF(__pyx_v_codec);
   __Pyx_DECREF((PyObject *)__pyx_v_arr);
-  __Pyx_XDECREF((PyObject *)__pyx_v_dt);
+  __Pyx_DECREF((PyObject *)__pyx_v_dt);
   __Pyx_DECREF(__pyx_v_uc_str);
   __Pyx_XGIVEREF((PyObject *)__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":709
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":737
  *             shape=(M,N))
  * 
  *     cpdef cnp.ndarray read_char(self, VarHeader5 header):             # <<<<<<<<<<<<<<
@@ -6035,9 +6384,9 @@
   PyObject *__pyx_r = NULL;
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("read_char");
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_header), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "header", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_header), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "header", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_char(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_header), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_char(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_header), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -6055,7 +6404,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":770
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":806
  *                           order='F')
  * 
  *     cpdef cnp.ndarray read_cells(self, VarHeader5 header):             # <<<<<<<<<<<<<<
@@ -6094,19 +6443,19 @@
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overriden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_cells); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_cells); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_cells)) {
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(((PyObject *)__pyx_v_header));
       PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_header));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_header));
-      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = ((PyArrayObject *)__pyx_t_3);
       __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -6115,31 +6464,31 @@
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":776
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":812
  *             cnp.ndarray[object, ndim=1] result
  *         # Account for fortran indexing of cells
  *         tupdims = tuple(header.dims[::-1])             # <<<<<<<<<<<<<<
  *         cdef size_t length = self.size_from_header(header)
  *         result = np.empty(length, dtype=object)
  */
-  __pyx_t_1 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_GetItem(__pyx_v_header->dims, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetItem(__pyx_v_header->dims, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyTuple_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyTuple_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_v_tupdims));
   __pyx_v_tupdims = ((PyObject *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":777
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":813
  *         # Account for fortran indexing of cells
  *         tupdims = tuple(header.dims[::-1])
  *         cdef size_t length = self.size_from_header(header)             # <<<<<<<<<<<<<<
@@ -6148,34 +6497,34 @@
  */
   __pyx_v_length = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->size_from_header(__pyx_v_self, __pyx_v_header);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":778
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":814
  *         tupdims = tuple(header.dims[::-1])
  *         cdef size_t length = self.size_from_header(header)
  *         result = np.empty(length, dtype=object)             # <<<<<<<<<<<<<<
  *         for i in range(length):
  *             result[i] = self.read_mi_matrix()
  */
-  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_3));
-  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_1, __pyx_t_2, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_1, __pyx_t_2, ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_5 = ((PyArrayObject *)__pyx_t_4);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
@@ -6192,14 +6541,14 @@
     }
     __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
     __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_5 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_v_result));
   __pyx_v_result = ((PyArrayObject *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":779
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":815
  *         cdef size_t length = self.size_from_header(header)
  *         result = np.empty(length, dtype=object)
  *         for i in range(length):             # <<<<<<<<<<<<<<
@@ -6210,21 +6559,21 @@
   for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
     __pyx_v_i = __pyx_t_11;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":780
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":816
  *         result = np.empty(length, dtype=object)
  *         for i in range(length):
  *             result[i] = self.read_mi_matrix()             # <<<<<<<<<<<<<<
  *         return result.reshape(tupdims).T
  * 
  */
-    __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_mi_matrix(__pyx_v_self, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_mi_matrix(__pyx_v_self, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_12 = __pyx_v_i;
     __pyx_t_6 = -1;
     if (unlikely(__pyx_t_12 >= (size_t)__pyx_bshape_0_result)) __pyx_t_6 = 0;
     if (unlikely(__pyx_t_6 != -1)) {
       __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_t_13 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_12, __pyx_bstride_0_result);
     __Pyx_GOTREF(*__pyx_t_13);
@@ -6234,7 +6583,7 @@
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":781
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":817
  *         for i in range(length):
  *             result[i] = self.read_mi_matrix()
  *         return result.reshape(tupdims).T             # <<<<<<<<<<<<<<
@@ -6242,21 +6591,21 @@
  *     def read_fieldnames(self):
  */
   __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__reshape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__reshape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(((PyObject *)__pyx_v_tupdims));
   PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_tupdims));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_tupdims));
-  __pyx_t_2 = PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__T); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__T); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = ((PyArrayObject *)__pyx_t_3);
   __pyx_t_3 = 0;
   goto __pyx_L0;
@@ -6285,7 +6634,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":770
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":806
  *                           order='F')
  * 
  *     cpdef cnp.ndarray read_cells(self, VarHeader5 header):             # <<<<<<<<<<<<<<
@@ -6299,9 +6648,9 @@
   PyObject *__pyx_r = NULL;
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("read_cells");
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_header), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "header", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_header), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "header", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_cells(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_header), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_cells(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_header), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -6319,7 +6668,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":783
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":819
  *         return result.reshape(tupdims).T
  * 
  *     def read_fieldnames(self):             # <<<<<<<<<<<<<<
@@ -6335,7 +6684,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("read_fieldnames");
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":789
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":825
  *         '''
  *         cdef int n_names
  *         return self.cread_fieldnames(&n_names)             # <<<<<<<<<<<<<<
@@ -6343,7 +6692,7 @@
  *     cdef inline object cread_fieldnames(self, int *n_names_ptr):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->cread_fieldnames(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), (&__pyx_v_n_names)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->cread_fieldnames(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), (&__pyx_v_n_names)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -6361,7 +6710,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":791
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":827
  *         return self.cread_fieldnames(&n_names)
  * 
  *     cdef inline object cread_fieldnames(self, int *n_names_ptr):             # <<<<<<<<<<<<<<
@@ -6377,7 +6726,11 @@
   PyObject *__pyx_v_field_names;
   int __pyx_v_res;
   PyObject *__pyx_v_names = 0;
+  int *__pyx_v_n_duplicates;
+  char **__pyx_v_name_ptrs;
   char *__pyx_v_n_ptr;
+  int __pyx_v_j;
+  int __pyx_v_dup_no;
   PyObject *__pyx_r = NULL;
   int __pyx_t_1;
   int __pyx_t_2;
@@ -6387,21 +6740,23 @@
   char *__pyx_t_6;
   int __pyx_t_7;
   PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  int __pyx_t_10;
   __Pyx_RefNannySetupContext("cread_fieldnames");
   __pyx_v_name = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_field_names = Py_None; __Pyx_INCREF(Py_None);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":797
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":833
  *             object name, field_names
  *         # Read field names into list
  *         cdef int res = self.read_into_int32s(&namelength)             # <<<<<<<<<<<<<<
  *         if res != 1:
  *             raise ValueError('Only one value for namelength')
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_into_int32s(__pyx_v_self, (&__pyx_v_namelength)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_into_int32s(__pyx_v_self, (&__pyx_v_namelength)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_res = __pyx_t_1;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":798
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":834
  *         # Read field names into list
  *         cdef int res = self.read_into_int32s(&namelength)
  *         if res != 1:             # <<<<<<<<<<<<<<
@@ -6411,149 +6766,292 @@
   __pyx_t_2 = (__pyx_v_res != 1);
   if (__pyx_t_2) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":799
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":835
  *         cdef int res = self.read_into_int32s(&namelength)
  *         if res != 1:
  *             raise ValueError('Only one value for namelength')             # <<<<<<<<<<<<<<
  *         cdef object names = self.read_int8_string()
  *         field_names = []
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(((PyObject *)__pyx_kp_s_10));
-    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_10));
-    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_10));
-    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_12));
+    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_s_12));
+    __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_12));
+    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L3;
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":800
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":836
  *         if res != 1:
  *             raise ValueError('Only one value for namelength')
  *         cdef object names = self.read_int8_string()             # <<<<<<<<<<<<<<
  *         field_names = []
  *         n_names = PyBytes_Size(names) // namelength
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_names = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":801
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":837
  *             raise ValueError('Only one value for namelength')
  *         cdef object names = self.read_int8_string()
  *         field_names = []             # <<<<<<<<<<<<<<
  *         n_names = PyBytes_Size(names) // namelength
- *         cdef char *n_ptr = names
+ *         # Make n_duplicates and pointer arrays
  */
-  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_4));
   __Pyx_DECREF(__pyx_v_field_names);
   __pyx_v_field_names = ((PyObject *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":802
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":838
  *         cdef object names = self.read_int8_string()
  *         field_names = []
  *         n_names = PyBytes_Size(names) // namelength             # <<<<<<<<<<<<<<
- *         cdef char *n_ptr = names
- *         for i in range(n_names):
+ *         # Make n_duplicates and pointer arrays
+ *         cdef:
  */
-  __pyx_t_5 = PyBytes_Size(__pyx_v_names); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyBytes_Size(__pyx_v_names); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (unlikely(__pyx_v_namelength == 0)) {
     PyErr_Format(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   else if (sizeof(Py_ssize_t) == sizeof(long) && unlikely(__pyx_v_namelength == -1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_5))) {
     PyErr_Format(PyExc_OverflowError, "value too large to perform division");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_v_n_names = __Pyx_div_Py_ssize_t(__pyx_t_5, __pyx_v_namelength);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":803
- *         field_names = []
- *         n_names = PyBytes_Size(names) // namelength
- *         cdef char *n_ptr = names             # <<<<<<<<<<<<<<
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":843
+ *             int *n_duplicates
+ *             char **name_ptrs
+ *         n_duplicates = <int *>calloc(n_names, sizeof(int))             # <<<<<<<<<<<<<<
+ *         name_ptrs = <char **>calloc(n_names, sizeof(char *))
+ *         cdef:
+ */
+  __pyx_v_n_duplicates = ((int *)calloc(__pyx_v_n_names, (sizeof(int))));
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":844
+ *             char **name_ptrs
+ *         n_duplicates = <int *>calloc(n_names, sizeof(int))
+ *         name_ptrs = <char **>calloc(n_names, sizeof(char *))             # <<<<<<<<<<<<<<
+ *         cdef:
+ *             char *n_ptr = names
+ */
+  __pyx_v_name_ptrs = ((char **)calloc(__pyx_v_n_names, (sizeof(char *))));
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":846
+ *         name_ptrs = <char **>calloc(n_names, sizeof(char *))
+ *         cdef:
+ *             char *n_ptr = names             # <<<<<<<<<<<<<<
+ *             int j, dup_no
  *         for i in range(n_names):
- *             name = PyBytes_FromString(n_ptr)
  */
-  __pyx_t_6 = PyBytes_AsString(__pyx_v_names); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyBytes_AsString(__pyx_v_names); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_n_ptr = __pyx_t_6;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":804
- *         n_names = PyBytes_Size(names) // namelength
- *         cdef char *n_ptr = names
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":848
+ *             char *n_ptr = names
+ *             int j, dup_no
  *         for i in range(n_names):             # <<<<<<<<<<<<<<
- *             name = PyBytes_FromString(n_ptr)
- *             field_names.append(asstr(name))
+ *             name = asstr(PyBytes_FromString(n_ptr))
+ *             # Check if this is a duplicate field, rename if so
  */
   __pyx_t_1 = __pyx_v_n_names;
   for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_1; __pyx_t_7+=1) {
     __pyx_v_i = __pyx_t_7;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":805
- *         cdef char *n_ptr = names
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":849
+ *             int j, dup_no
  *         for i in range(n_names):
- *             name = PyBytes_FromString(n_ptr)             # <<<<<<<<<<<<<<
- *             field_names.append(asstr(name))
- *             n_ptr += namelength
+ *             name = asstr(PyBytes_FromString(n_ptr))             # <<<<<<<<<<<<<<
+ *             # Check if this is a duplicate field, rename if so
+ *             name_ptrs[i] = n_ptr
  */
-    __pyx_t_4 = ((PyObject *)PyBytes_FromString(__pyx_v_n_ptr)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__asstr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = ((PyObject *)PyBytes_FromString(__pyx_v_n_ptr)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __Pyx_DECREF(__pyx_v_name);
-    __pyx_v_name = __pyx_t_4;
-    __pyx_t_4 = 0;
+    __pyx_v_name = __pyx_t_3;
+    __pyx_t_3 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":806
- *         for i in range(n_names):
- *             name = PyBytes_FromString(n_ptr)
- *             field_names.append(asstr(name))             # <<<<<<<<<<<<<<
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":851
+ *             name = asstr(PyBytes_FromString(n_ptr))
+ *             # Check if this is a duplicate field, rename if so
+ *             name_ptrs[i] = n_ptr             # <<<<<<<<<<<<<<
+ *             dup_no = 0
+ *             for j in range(i):
+ */
+    (__pyx_v_name_ptrs[__pyx_v_i]) = __pyx_v_n_ptr;
+
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":852
+ *             # Check if this is a duplicate field, rename if so
+ *             name_ptrs[i] = n_ptr
+ *             dup_no = 0             # <<<<<<<<<<<<<<
+ *             for j in range(i):
+ *                 if strcmp(n_ptr, name_ptrs[j]) == 0: # the same
+ */
+    __pyx_v_dup_no = 0;
+
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":853
+ *             name_ptrs[i] = n_ptr
+ *             dup_no = 0
+ *             for j in range(i):             # <<<<<<<<<<<<<<
+ *                 if strcmp(n_ptr, name_ptrs[j]) == 0: # the same
+ *                     n_duplicates[j] += 1
+ */
+    __pyx_t_9 = __pyx_v_i;
+    for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
+      __pyx_v_j = __pyx_t_10;
+
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":854
+ *             dup_no = 0
+ *             for j in range(i):
+ *                 if strcmp(n_ptr, name_ptrs[j]) == 0: # the same             # <<<<<<<<<<<<<<
+ *                     n_duplicates[j] += 1
+ *                     dup_no = n_duplicates[j]
+ */
+      __pyx_t_2 = (strcmp(__pyx_v_n_ptr, (__pyx_v_name_ptrs[__pyx_v_j])) == 0);
+      if (__pyx_t_2) {
+
+        /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":855
+ *             for j in range(i):
+ *                 if strcmp(n_ptr, name_ptrs[j]) == 0: # the same
+ *                     n_duplicates[j] += 1             # <<<<<<<<<<<<<<
+ *                     dup_no = n_duplicates[j]
+ *                     break
+ */
+        (__pyx_v_n_duplicates[__pyx_v_j]) += 1;
+
+        /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":856
+ *                 if strcmp(n_ptr, name_ptrs[j]) == 0: # the same
+ *                     n_duplicates[j] += 1
+ *                     dup_no = n_duplicates[j]             # <<<<<<<<<<<<<<
+ *                     break
+ *             if dup_no != 0:
+ */
+        __pyx_v_dup_no = (__pyx_v_n_duplicates[__pyx_v_j]);
+
+        /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":857
+ *                     n_duplicates[j] += 1
+ *                     dup_no = n_duplicates[j]
+ *                     break             # <<<<<<<<<<<<<<
+ *             if dup_no != 0:
+ *                 name = '_%d_%s' % (dup_no, name)
+ */
+        goto __pyx_L7_break;
+        goto __pyx_L8;
+      }
+      __pyx_L8:;
+    }
+    __pyx_L7_break:;
+
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":858
+ *                     dup_no = n_duplicates[j]
+ *                     break
+ *             if dup_no != 0:             # <<<<<<<<<<<<<<
+ *                 name = '_%d_%s' % (dup_no, name)
+ *             field_names.append(name)
+ */
+    __pyx_t_2 = (__pyx_v_dup_no != 0);
+    if (__pyx_t_2) {
+
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":859
+ *                     break
+ *             if dup_no != 0:
+ *                 name = '_%d_%s' % (dup_no, name)             # <<<<<<<<<<<<<<
+ *             field_names.append(name)
  *             n_ptr += namelength
- *         n_names_ptr[0] = n_names
  */
-    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__asstr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyInt_FromLong(__pyx_v_dup_no); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_3);
+      __Pyx_INCREF(__pyx_v_name);
+      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_name);
+      __Pyx_GIVEREF(__pyx_v_name);
+      __pyx_t_3 = 0;
+      __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_13), __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_v_name);
+      __pyx_v_name = ((PyObject *)__pyx_t_3);
+      __pyx_t_3 = 0;
+      goto __pyx_L9;
+    }
+    __pyx_L9:;
+
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":860
+ *             if dup_no != 0:
+ *                 name = '_%d_%s' % (dup_no, name)
+ *             field_names.append(name)             # <<<<<<<<<<<<<<
+ *             n_ptr += namelength
+ *         free(n_duplicates)
+ */
+    __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_field_names, __pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_INCREF(__pyx_v_name);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
-    __Pyx_GIVEREF(__pyx_v_name);
-    __pyx_t_8 = PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_field_names, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":807
- *             name = PyBytes_FromString(n_ptr)
- *             field_names.append(asstr(name))
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":861
+ *                 name = '_%d_%s' % (dup_no, name)
+ *             field_names.append(name)
  *             n_ptr += namelength             # <<<<<<<<<<<<<<
- *         n_names_ptr[0] = n_names
- *         return field_names
+ *         free(n_duplicates)
+ *         free(name_ptrs)
  */
     __pyx_v_n_ptr += __pyx_v_namelength;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":808
- *             field_names.append(asstr(name))
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":862
+ *             field_names.append(name)
  *             n_ptr += namelength
+ *         free(n_duplicates)             # <<<<<<<<<<<<<<
+ *         free(name_ptrs)
+ *         n_names_ptr[0] = n_names
+ */
+  free(__pyx_v_n_duplicates);
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":863
+ *             n_ptr += namelength
+ *         free(n_duplicates)
+ *         free(name_ptrs)             # <<<<<<<<<<<<<<
+ *         n_names_ptr[0] = n_names
+ *         return field_names
+ */
+  free(__pyx_v_name_ptrs);
+
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":864
+ *         free(n_duplicates)
+ *         free(name_ptrs)
  *         n_names_ptr[0] = n_names             # <<<<<<<<<<<<<<
  *         return field_names
  * 
  */
   (__pyx_v_n_names_ptr[0]) = __pyx_v_n_names;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":809
- *             n_ptr += namelength
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":865
+ *         free(name_ptrs)
  *         n_names_ptr[0] = n_names
  *         return field_names             # <<<<<<<<<<<<<<
  * 
@@ -6581,7 +7079,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":811
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":867
  *         return field_names
  * 
  *     cpdef cnp.ndarray read_struct(self, VarHeader5 header):             # <<<<<<<<<<<<<<
@@ -6636,19 +7134,19 @@
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overriden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_struct); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_struct); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_struct)) {
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(((PyObject *)__pyx_v_header));
       PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_header));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_header));
-      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = ((PyArrayObject *)__pyx_t_3);
       __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -6657,43 +7155,43 @@
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":824
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":880
  *             object dt, tupdims
  *         # Read field names into list
  *         cdef object field_names = self.cread_fieldnames(&n_names)             # <<<<<<<<<<<<<<
  *         # Prepare struct array
  *         tupdims = tuple(header.dims[::-1])
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->cread_fieldnames(__pyx_v_self, (&__pyx_v_n_names)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->cread_fieldnames(__pyx_v_self, (&__pyx_v_n_names)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_field_names = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":826
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":882
  *         cdef object field_names = self.cread_fieldnames(&n_names)
  *         # Prepare struct array
  *         tupdims = tuple(header.dims[::-1])             # <<<<<<<<<<<<<<
  *         cdef size_t length = self.size_from_header(header)
  *         if self.struct_as_record: # to record arrays
  */
-  __pyx_t_1 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_GetItem(__pyx_v_header->dims, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetItem(__pyx_v_header->dims, __pyx_t_1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyTuple_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)&PyTuple_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_v_tupdims);
   __pyx_v_tupdims = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":827
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":883
  *         # Prepare struct array
  *         tupdims = tuple(header.dims[::-1])
  *         cdef size_t length = self.size_from_header(header)             # <<<<<<<<<<<<<<
@@ -6702,7 +7200,7 @@
  */
   __pyx_v_length = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->size_from_header(__pyx_v_self, __pyx_v_header);
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":828
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":884
  *         tupdims = tuple(header.dims[::-1])
  *         cdef size_t length = self.size_from_header(header)
  *         if self.struct_as_record: # to record arrays             # <<<<<<<<<<<<<<
@@ -6711,7 +7209,7 @@
  */
   if (__pyx_v_self->struct_as_record) {
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":829
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":885
  *         cdef size_t length = self.size_from_header(header)
  *         if self.struct_as_record: # to record arrays
  *             if not n_names:             # <<<<<<<<<<<<<<
@@ -6721,7 +7219,7 @@
     __pyx_t_4 = (!__pyx_v_n_names);
     if (__pyx_t_4) {
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":833
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":889
  *                 # representation we can use, falling back to empty
  *                 # object
  *                 return np.empty(tupdims, dtype=object).T             # <<<<<<<<<<<<<<
@@ -6729,28 +7227,28 @@
  *             rec_res = np.empty(length, dtype=dt)
  */
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_v_tupdims);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_tupdims);
       __Pyx_GIVEREF(__pyx_v_tupdims);
-      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(((PyObject *)__pyx_t_2));
-      if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_1, __pyx_t_3, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_1, __pyx_t_3, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
-      __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__T); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__T); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = ((PyArrayObject *)__pyx_t_2);
       __pyx_t_2 = 0;
       goto __pyx_L0;
@@ -6758,19 +7256,19 @@
     }
     __pyx_L4:;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":834
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":890
  *                 # object
  *                 return np.empty(tupdims, dtype=object).T
  *             dt = [(field_name, object) for field_name in field_names]             # <<<<<<<<<<<<<<
  *             rec_res = np.empty(length, dtype=dt)
  *             for i in range(length):
  */
-    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
     if (PyList_CheckExact(__pyx_v_field_names) || PyTuple_CheckExact(__pyx_v_field_names)) {
       __pyx_t_6 = 0; __pyx_t_5 = __pyx_v_field_names; __Pyx_INCREF(__pyx_t_5);
     } else {
-      __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_field_names); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_field_names); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
     }
     for (;;) {
@@ -6783,7 +7281,7 @@
       } else {
         __pyx_t_3 = PyIter_Next(__pyx_t_5);
         if (!__pyx_t_3) {
-          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           break;
         }
         __Pyx_GOTREF(__pyx_t_3);
@@ -6791,7 +7289,7 @@
       __Pyx_DECREF(__pyx_v_field_name);
       __pyx_v_field_name = __pyx_t_3;
       __pyx_t_3 = 0;
-      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_v_field_name);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_field_name);
@@ -6799,7 +7297,7 @@
       __Pyx_INCREF(__pyx_builtin_object);
       PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_builtin_object);
       __Pyx_GIVEREF(__pyx_builtin_object);
-      if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -6808,39 +7306,39 @@
     __pyx_v_dt = ((PyObject *)__pyx_t_2);
     __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":835
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":891
  *                 return np.empty(tupdims, dtype=object).T
  *             dt = [(field_name, object) for field_name in field_names]
  *             rec_res = np.empty(length, dtype=dt)             # <<<<<<<<<<<<<<
  *             for i in range(length):
  *                 for field_name in field_names:
  */
-    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(((PyObject *)__pyx_t_2));
-    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_v_dt) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = PyEval_CallObjectWithKeywords(__pyx_t_5, __pyx_t_3, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_v_dt) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyEval_CallObjectWithKeywords(__pyx_t_5, __pyx_t_3, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
-    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(((PyObject *)__pyx_v_rec_res));
     __pyx_v_rec_res = ((PyArrayObject *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":836
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":892
  *             dt = [(field_name, object) for field_name in field_names]
  *             rec_res = np.empty(length, dtype=dt)
  *             for i in range(length):             # <<<<<<<<<<<<<<
@@ -6851,7 +7349,7 @@
     for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
       __pyx_v_i = __pyx_t_8;
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":837
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":893
  *             rec_res = np.empty(length, dtype=dt)
  *             for i in range(length):
  *                 for field_name in field_names:             # <<<<<<<<<<<<<<
@@ -6861,7 +7359,7 @@
       if (PyList_CheckExact(__pyx_v_field_names) || PyTuple_CheckExact(__pyx_v_field_names)) {
         __pyx_t_6 = 0; __pyx_t_1 = __pyx_v_field_names; __Pyx_INCREF(__pyx_t_1);
       } else {
-        __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_field_names); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_field_names); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
       }
       for (;;) {
@@ -6874,7 +7372,7 @@
         } else {
           __pyx_t_2 = PyIter_Next(__pyx_t_1);
           if (!__pyx_t_2) {
-            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             break;
           }
           __Pyx_GOTREF(__pyx_t_2);
@@ -6883,25 +7381,25 @@
         __pyx_v_field_name = __pyx_t_2;
         __pyx_t_2 = 0;
 
-        /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":838
+        /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":894
  *             for i in range(length):
  *                 for field_name in field_names:
  *                     rec_res[i][field_name] = self.read_mi_matrix()             # <<<<<<<<<<<<<<
  *             return rec_res.reshape(tupdims).T
  *         # Backward compatibility with previous format
  */
-        __pyx_t_2 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_mi_matrix(__pyx_v_self, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_mi_matrix(__pyx_v_self, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_rec_res), __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_GetItemInt(((PyObject *)__pyx_v_rec_res), __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        if (PyObject_SetItem(__pyx_t_3, __pyx_v_field_name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyObject_SetItem(__pyx_t_3, __pyx_v_field_name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       }
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     }
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":839
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":895
  *                 for field_name in field_names:
  *                     rec_res[i][field_name] = self.read_mi_matrix()
  *             return rec_res.reshape(tupdims).T             # <<<<<<<<<<<<<<
@@ -6909,21 +7407,21 @@
  *         obj_template = mio5p.mat_struct()
  */
     __Pyx_XDECREF(((PyObject *)__pyx_r));
-    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_rec_res), __pyx_n_s__reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_rec_res), __pyx_n_s__reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_tupdims);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_tupdims);
     __Pyx_GIVEREF(__pyx_v_tupdims);
-    __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__T); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__T); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_r = ((PyArrayObject *)__pyx_t_2);
     __pyx_t_2 = 0;
     goto __pyx_L0;
@@ -6931,62 +7429,62 @@
   }
   __pyx_L3:;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":841
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":897
  *             return rec_res.reshape(tupdims).T
  *         # Backward compatibility with previous format
  *         obj_template = mio5p.mat_struct()             # <<<<<<<<<<<<<<
  *         obj_template._fieldnames = field_names
  *         result = np.empty(length, dtype=object)
  */
-  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__mat_struct); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__mat_struct); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_v_obj_template);
   __pyx_v_obj_template = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":842
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":898
  *         # Backward compatibility with previous format
  *         obj_template = mio5p.mat_struct()
  *         obj_template._fieldnames = field_names             # <<<<<<<<<<<<<<
  *         result = np.empty(length, dtype=object)
  *         for i in range(length):
  */
-  if (PyObject_SetAttr(__pyx_v_obj_template, __pyx_n_s___fieldnames, __pyx_v_field_names) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_v_obj_template, __pyx_n_s___fieldnames, __pyx_v_field_names) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":843
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":899
  *         obj_template = mio5p.mat_struct()
  *         obj_template._fieldnames = field_names
  *         result = np.empty(length, dtype=object)             # <<<<<<<<<<<<<<
  *         for i in range(length):
  *             item = pycopy(obj_template)
  */
-  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_3, __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_3, __pyx_t_1, ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_9 = ((PyArrayObject *)__pyx_t_5);
   {
     __Pyx_BufFmt_StackElem __pyx_stack[1];
@@ -7003,14 +7501,14 @@
     }
     __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
     __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
-    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_9 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_v_result));
   __pyx_v_result = ((PyArrayObject *)__pyx_t_5);
   __pyx_t_5 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":844
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":900
  *         obj_template._fieldnames = field_names
  *         result = np.empty(length, dtype=object)
  *         for i in range(length):             # <<<<<<<<<<<<<<
@@ -7021,21 +7519,21 @@
   for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
     __pyx_v_i = __pyx_t_8;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":845
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":901
  *         result = np.empty(length, dtype=object)
  *         for i in range(length):
  *             item = pycopy(obj_template)             # <<<<<<<<<<<<<<
  *             for name in field_names:
  *                 item.__dict__[name] = self.read_mi_matrix()
  */
-    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__pycopy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__pycopy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_obj_template);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_obj_template);
     __Pyx_GIVEREF(__pyx_v_obj_template);
-    __pyx_t_1 = PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -7043,7 +7541,7 @@
     __pyx_v_item = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":846
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":902
  *         for i in range(length):
  *             item = pycopy(obj_template)
  *             for name in field_names:             # <<<<<<<<<<<<<<
@@ -7053,7 +7551,7 @@
     if (PyList_CheckExact(__pyx_v_field_names) || PyTuple_CheckExact(__pyx_v_field_names)) {
       __pyx_t_6 = 0; __pyx_t_1 = __pyx_v_field_names; __Pyx_INCREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_field_names); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_field_names); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     }
     for (;;) {
@@ -7066,7 +7564,7 @@
       } else {
         __pyx_t_2 = PyIter_Next(__pyx_t_1);
         if (!__pyx_t_2) {
-          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           break;
         }
         __Pyx_GOTREF(__pyx_t_2);
@@ -7075,24 +7573,24 @@
       __pyx_v_name = __pyx_t_2;
       __pyx_t_2 = 0;
 
-      /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":847
+      /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":903
  *             item = pycopy(obj_template)
  *             for name in field_names:
  *                 item.__dict__[name] = self.read_mi_matrix()             # <<<<<<<<<<<<<<
  *             result[i] = item
  *         return result.reshape(tupdims).T
  */
-      __pyx_t_2 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_mi_matrix(__pyx_v_self, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_mi_matrix(__pyx_v_self, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_5 = PyObject_GetAttr(__pyx_v_item, __pyx_n_s____dict__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_GetAttr(__pyx_v_item, __pyx_n_s____dict__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      if (PyObject_SetItem(__pyx_t_5, __pyx_v_name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (PyObject_SetItem(__pyx_t_5, __pyx_v_name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":848
+    /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":904
  *             for name in field_names:
  *                 item.__dict__[name] = self.read_mi_matrix()
  *             result[i] = item             # <<<<<<<<<<<<<<
@@ -7107,7 +7605,7 @@
     } else if (unlikely(__pyx_t_13 >= __pyx_bshape_0_result)) __pyx_t_14 = 0;
     if (unlikely(__pyx_t_14 != -1)) {
       __Pyx_RaiseBufferIndexError(__pyx_t_14);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_t_15 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_13, __pyx_bstride_0_result);
     __Pyx_GOTREF(*__pyx_t_15);
@@ -7116,7 +7614,7 @@
     __Pyx_GIVEREF(*__pyx_t_15);
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":849
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":905
  *                 item.__dict__[name] = self.read_mi_matrix()
  *             result[i] = item
  *         return result.reshape(tupdims).T             # <<<<<<<<<<<<<<
@@ -7124,21 +7622,21 @@
  *     cpdef cnp.ndarray read_opaque(self, VarHeader5 hdr):
  */
   __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_result), __pyx_n_s__reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_tupdims);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_tupdims);
   __Pyx_GIVEREF(__pyx_v_tupdims);
-  __pyx_t_5 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__T); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__T); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = ((PyArrayObject *)__pyx_t_2);
   __pyx_t_2 = 0;
   goto __pyx_L0;
@@ -7174,7 +7672,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":811
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":867
  *         return field_names
  * 
  *     cpdef cnp.ndarray read_struct(self, VarHeader5 header):             # <<<<<<<<<<<<<<
@@ -7188,9 +7686,9 @@
   PyObject *__pyx_r = NULL;
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("read_struct");
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_header), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "header", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_header), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "header", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_struct(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_header), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_struct(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_header), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -7208,7 +7706,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":851
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":907
  *         return result.reshape(tupdims).T
  * 
  *     cpdef cnp.ndarray read_opaque(self, VarHeader5 hdr):             # <<<<<<<<<<<<<<
@@ -7229,19 +7727,19 @@
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overriden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_opaque); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__read_opaque); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (void *)&__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_opaque)) {
       __Pyx_XDECREF(((PyObject *)__pyx_r));
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(((PyObject *)__pyx_v_hdr));
       PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_hdr));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_hdr));
-      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_r = ((PyArrayObject *)__pyx_t_3);
       __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -7250,100 +7748,100 @@
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":867
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":923
  *         See the comments at the beginning of ``mio5.py``
  *         '''
  *         cdef cnp.ndarray res = np.empty((1,), dtype=OPAQUE_DTYPE)             # <<<<<<<<<<<<<<
  *         res[0]['s0'] = self.read_int8_string()
  *         res[0]['s1'] = self.read_int8_string()
  */
-  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_int_1);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_1);
   __Pyx_GIVEREF(__pyx_int_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
-  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_v_5scipy_2io_6matlab_10mio5_utils_OPAQUE_DTYPE)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_3, __pyx_t_2, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), ((PyObject *)__pyx_v_5scipy_2io_6matlab_10mio5_utils_OPAQUE_DTYPE)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyEval_CallObjectWithKeywords(__pyx_t_3, __pyx_t_2, ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_res = ((PyArrayObject *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":868
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":924
  *         '''
  *         cdef cnp.ndarray res = np.empty((1,), dtype=OPAQUE_DTYPE)
  *         res[0]['s0'] = self.read_int8_string()             # <<<<<<<<<<<<<<
  *         res[0]['s1'] = self.read_int8_string()
  *         res[0]['s2'] = self.read_int8_string()
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_res), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_res), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyObject_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__s0), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__s0), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":869
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":925
  *         cdef cnp.ndarray res = np.empty((1,), dtype=OPAQUE_DTYPE)
  *         res[0]['s0'] = self.read_int8_string()
  *         res[0]['s1'] = self.read_int8_string()             # <<<<<<<<<<<<<<
  *         res[0]['s2'] = self.read_int8_string()
  *         res[0]['arr'] = self.read_mi_matrix()
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_res), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_res), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyObject_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__s1), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__s1), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":870
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":926
  *         res[0]['s0'] = self.read_int8_string()
  *         res[0]['s1'] = self.read_int8_string()
  *         res[0]['s2'] = self.read_int8_string()             # <<<<<<<<<<<<<<
  *         res[0]['arr'] = self.read_mi_matrix()
  *         return res
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_int8_string(__pyx_v_self); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_res), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_res), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyObject_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__s2), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__s2), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":871
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":927
  *         res[0]['s1'] = self.read_int8_string()
  *         res[0]['s2'] = self.read_int8_string()
  *         res[0]['arr'] = self.read_mi_matrix()             # <<<<<<<<<<<<<<
  *         return res
  */
-  __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_mi_matrix(__pyx_v_self, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self->__pyx_vtab)->read_mi_matrix(__pyx_v_self, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_res), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_res), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyObject_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__arr), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__arr), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":872
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":928
  *         res[0]['s2'] = self.read_int8_string()
  *         res[0]['arr'] = self.read_mi_matrix()
  *         return res             # <<<<<<<<<<<<<<
@@ -7369,7 +7867,7 @@
   return __pyx_r;
 }
 
-/* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":851
+/* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":907
  *         return result.reshape(tupdims).T
  * 
  *     cpdef cnp.ndarray read_opaque(self, VarHeader5 hdr):             # <<<<<<<<<<<<<<
@@ -7383,9 +7881,9 @@
   PyObject *__pyx_r = NULL;
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("read_opaque");
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_hdr), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "hdr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_hdr), __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5, 1, "hdr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_opaque(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_hdr), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self)->__pyx_vtab)->read_opaque(((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarReader5 *)__pyx_v_self), ((struct __pyx_obj_5scipy_2io_6matlab_10mio5_utils_VarHeader5 *)__pyx_v_hdr), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -7403,7 +7901,7 @@
   return __pyx_r;
 }
 
-/* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":188
+/* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":188
  *         # experimental exception made for __getbuffer__ and __releasebuffer__
  *         # -- the details of this may change.
  *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
@@ -7438,7 +7936,7 @@
   __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(__pyx_v_info->obj);
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":194
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":194
  *             # of flags
  *             cdef int copy_shape, i, ndim
  *             cdef int endian_detector = 1             # <<<<<<<<<<<<<<
@@ -7447,7 +7945,7 @@
  */
   __pyx_v_endian_detector = 1;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":195
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":195
  *             cdef int copy_shape, i, ndim
  *             cdef int endian_detector = 1
  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
@@ -7456,7 +7954,7 @@
  */
   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":197
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":197
  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
  * 
  *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
@@ -7465,7 +7963,7 @@
  */
   __pyx_v_ndim = PyArray_NDIM(((PyArrayObject *)__pyx_v_self));
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":199
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":199
  *             ndim = PyArray_NDIM(self)
  * 
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
@@ -7475,7 +7973,7 @@
   __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
   if (__pyx_t_1) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":200
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":200
  * 
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
  *                 copy_shape = 1             # <<<<<<<<<<<<<<
@@ -7487,7 +7985,7 @@
   }
   /*else*/ {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":202
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":202
  *                 copy_shape = 1
  *             else:
  *                 copy_shape = 0             # <<<<<<<<<<<<<<
@@ -7498,7 +7996,7 @@
   }
   __pyx_L5:;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":204
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":204
  *                 copy_shape = 0
  * 
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
@@ -7508,7 +8006,7 @@
   __pyx_t_1 = ((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS);
   if (__pyx_t_1) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":205
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":205
  * 
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
@@ -7522,7 +8020,7 @@
   }
   if (__pyx_t_3) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":206
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":206
  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
  *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
@@ -7531,9 +8029,9 @@
  */
     __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_INCREF(((PyObject *)__pyx_kp_u_11));
-    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_11));
-    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_11));
+    __Pyx_INCREF(((PyObject *)__pyx_kp_u_14));
+    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_14));
+    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_14));
     __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -7544,7 +8042,7 @@
   }
   __pyx_L6:;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":208
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":208
  *                 raise ValueError(u"ndarray is not C contiguous")
  * 
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
@@ -7554,7 +8052,7 @@
   __pyx_t_3 = ((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS);
   if (__pyx_t_3) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":209
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":209
  * 
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
@@ -7568,7 +8066,7 @@
   }
   if (__pyx_t_2) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":210
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":210
  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
  *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
  *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
@@ -7577,9 +8075,9 @@
  */
     __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_INCREF(((PyObject *)__pyx_kp_u_12));
-    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_12));
-    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_12));
+    __Pyx_INCREF(((PyObject *)__pyx_kp_u_15));
+    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_15));
+    __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_15));
     __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -7590,7 +8088,7 @@
   }
   __pyx_L7:;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":212
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":212
  *                 raise ValueError(u"ndarray is not Fortran contiguous")
  * 
  *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
@@ -7599,7 +8097,7 @@
  */
   __pyx_v_info->buf = PyArray_DATA(((PyArrayObject *)__pyx_v_self));
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":213
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":213
  * 
  *             info.buf = PyArray_DATA(self)
  *             info.ndim = ndim             # <<<<<<<<<<<<<<
@@ -7608,7 +8106,7 @@
  */
   __pyx_v_info->ndim = __pyx_v_ndim;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":214
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":214
  *             info.buf = PyArray_DATA(self)
  *             info.ndim = ndim
  *             if copy_shape:             # <<<<<<<<<<<<<<
@@ -7617,7 +8115,7 @@
  */
   if (__pyx_v_copy_shape) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":217
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":217
  *                 # Allocate new buffer for strides and shape info. This is allocated
  *                 # as one block, strides first.
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)             # <<<<<<<<<<<<<<
@@ -7626,7 +8124,7 @@
  */
     __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * __pyx_v_ndim) * 2)));
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":218
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":218
  *                 # as one block, strides first.
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)
  *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
@@ -7635,7 +8133,7 @@
  */
     __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":219
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":219
  *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2)
  *                 info.shape = info.strides + ndim
  *                 for i in range(ndim):             # <<<<<<<<<<<<<<
@@ -7646,7 +8144,7 @@
     for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
       __pyx_v_i = __pyx_t_7;
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":220
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":220
  *                 info.shape = info.strides + ndim
  *                 for i in range(ndim):
  *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
@@ -7655,7 +8153,7 @@
  */
       (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(((PyArrayObject *)__pyx_v_self))[__pyx_v_i]);
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":221
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":221
  *                 for i in range(ndim):
  *                     info.strides[i] = PyArray_STRIDES(self)[i]
  *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
@@ -7668,7 +8166,7 @@
   }
   /*else*/ {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":223
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":223
  *                     info.shape[i] = PyArray_DIMS(self)[i]
  *             else:
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
@@ -7677,7 +8175,7 @@
  */
     __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(((PyArrayObject *)__pyx_v_self)));
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":224
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":224
  *             else:
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
@@ -7688,7 +8186,7 @@
   }
   __pyx_L8:;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":225
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":225
  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
@@ -7697,7 +8195,7 @@
  */
   __pyx_v_info->suboffsets = NULL;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":226
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":226
  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
@@ -7706,7 +8204,7 @@
  */
   __pyx_v_info->itemsize = PyArray_ITEMSIZE(((PyArrayObject *)__pyx_v_self));
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":227
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":227
  *             info.suboffsets = NULL
  *             info.itemsize = PyArray_ITEMSIZE(self)
  *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
@@ -7715,7 +8213,7 @@
  */
   __pyx_v_info->readonly = (!PyArray_ISWRITEABLE(((PyArrayObject *)__pyx_v_self)));
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":230
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":230
  * 
  *             cdef int t
  *             cdef char* f = NULL             # <<<<<<<<<<<<<<
@@ -7724,7 +8222,7 @@
  */
   __pyx_v_f = NULL;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":231
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":231
  *             cdef int t
  *             cdef char* f = NULL
  *             cdef dtype descr = self.descr             # <<<<<<<<<<<<<<
@@ -7734,7 +8232,7 @@
   __Pyx_INCREF(((PyObject *)((PyArrayObject *)__pyx_v_self)->descr));
   __pyx_v_descr = ((PyArrayObject *)__pyx_v_self)->descr;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":235
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":235
  *             cdef int offset
  * 
  *             cdef bint hasfields = PyDataType_HASFIELDS(descr)             # <<<<<<<<<<<<<<
@@ -7743,7 +8241,7 @@
  */
   __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":237
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":237
  *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
  * 
  *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
@@ -7759,7 +8257,7 @@
   }
   if (__pyx_t_1) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":239
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":239
  *             if not hasfields and not copy_shape:
  *                 # do not call releasebuffer
  *                 info.obj = None             # <<<<<<<<<<<<<<
@@ -7775,7 +8273,7 @@
   }
   /*else*/ {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":242
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":242
  *             else:
  *                 # need to call releasebuffer
  *                 info.obj = self             # <<<<<<<<<<<<<<
@@ -7790,7 +8288,7 @@
   }
   __pyx_L11:;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":244
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":244
  *                 info.obj = self
  * 
  *             if not hasfields:             # <<<<<<<<<<<<<<
@@ -7800,7 +8298,7 @@
   __pyx_t_1 = (!__pyx_v_hasfields);
   if (__pyx_t_1) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":245
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":245
  * 
  *             if not hasfields:
  *                 t = descr.type_num             # <<<<<<<<<<<<<<
@@ -7809,7 +8307,7 @@
  */
     __pyx_v_t = __pyx_v_descr->type_num;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":246
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":246
  *             if not hasfields:
  *                 t = descr.type_num
  *                 if ((descr.byteorder == '>' and little_endian) or             # <<<<<<<<<<<<<<
@@ -7824,7 +8322,7 @@
     }
     if (!__pyx_t_2) {
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":247
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":247
  *                 t = descr.type_num
  *                 if ((descr.byteorder == '>' and little_endian) or
  *                     (descr.byteorder == '<' and not little_endian)):             # <<<<<<<<<<<<<<
@@ -7844,7 +8342,7 @@
     }
     if (__pyx_t_1) {
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":248
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":248
  *                 if ((descr.byteorder == '>' and little_endian) or
  *                     (descr.byteorder == '<' and not little_endian)):
  *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
@@ -7853,9 +8351,9 @@
  */
       __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_INCREF(((PyObject *)__pyx_kp_u_13));
-      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_13));
-      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_13));
+      __Pyx_INCREF(((PyObject *)__pyx_kp_u_16));
+      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_kp_u_16));
+      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_16));
       __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -7866,7 +8364,7 @@
     }
     __pyx_L13:;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":249
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":249
  *                     (descr.byteorder == '<' and not little_endian)):
  *                     raise ValueError(u"Non-native byte order not supported")
  *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
@@ -7879,7 +8377,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":250
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":250
  *                     raise ValueError(u"Non-native byte order not supported")
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
@@ -7892,7 +8390,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":251
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":251
  *                 if   t == NPY_BYTE:        f = "b"
  *                 elif t == NPY_UBYTE:       f = "B"
  *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
@@ -7905,7 +8403,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":252
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":252
  *                 elif t == NPY_UBYTE:       f = "B"
  *                 elif t == NPY_SHORT:       f = "h"
  *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
@@ -7918,7 +8416,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":253
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":253
  *                 elif t == NPY_SHORT:       f = "h"
  *                 elif t == NPY_USHORT:      f = "H"
  *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
@@ -7931,7 +8429,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":254
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":254
  *                 elif t == NPY_USHORT:      f = "H"
  *                 elif t == NPY_INT:         f = "i"
  *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
@@ -7944,7 +8442,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":255
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":255
  *                 elif t == NPY_INT:         f = "i"
  *                 elif t == NPY_UINT:        f = "I"
  *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
@@ -7957,7 +8455,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":256
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":256
  *                 elif t == NPY_UINT:        f = "I"
  *                 elif t == NPY_LONG:        f = "l"
  *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
@@ -7970,7 +8468,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":257
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":257
  *                 elif t == NPY_LONG:        f = "l"
  *                 elif t == NPY_ULONG:       f = "L"
  *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
@@ -7983,7 +8481,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":258
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":258
  *                 elif t == NPY_ULONG:       f = "L"
  *                 elif t == NPY_LONGLONG:    f = "q"
  *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
@@ -7996,7 +8494,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":259
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":259
  *                 elif t == NPY_LONGLONG:    f = "q"
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
@@ -8009,7 +8507,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":260
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":260
  *                 elif t == NPY_ULONGLONG:   f = "Q"
  *                 elif t == NPY_FLOAT:       f = "f"
  *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
@@ -8022,7 +8520,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":261
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":261
  *                 elif t == NPY_FLOAT:       f = "f"
  *                 elif t == NPY_DOUBLE:      f = "d"
  *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
@@ -8035,7 +8533,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":262
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":262
  *                 elif t == NPY_DOUBLE:      f = "d"
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
@@ -8048,7 +8546,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":263
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":263
  *                 elif t == NPY_LONGDOUBLE:  f = "g"
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
@@ -8061,7 +8559,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":264
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":264
  *                 elif t == NPY_CFLOAT:      f = "Zf"
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
@@ -8074,7 +8572,7 @@
       goto __pyx_L14;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":265
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":265
  *                 elif t == NPY_CDOUBLE:     f = "Zd"
  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
  *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
@@ -8088,7 +8586,7 @@
     }
     /*else*/ {
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":267
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":267
  *                 elif t == NPY_OBJECT:      f = "O"
  *                 else:
  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
@@ -8097,7 +8595,7 @@
  */
       __pyx_t_5 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_14), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_17), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(((PyObject *)__pyx_t_4));
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -8114,7 +8612,7 @@
     }
     __pyx_L14:;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":268
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":268
  *                 else:
  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *                 info.format = f             # <<<<<<<<<<<<<<
@@ -8123,7 +8621,7 @@
  */
     __pyx_v_info->format = __pyx_v_f;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":269
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":269
  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *                 info.format = f
  *                 return             # <<<<<<<<<<<<<<
@@ -8136,7 +8634,7 @@
   }
   /*else*/ {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":271
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":271
  *                 return
  *             else:
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)             # <<<<<<<<<<<<<<
@@ -8145,7 +8643,7 @@
  */
     __pyx_v_info->format = ((char *)malloc(255));
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":272
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":272
  *             else:
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
  *                 info.format[0] = '^' # Native data types, manual alignment             # <<<<<<<<<<<<<<
@@ -8154,7 +8652,7 @@
  */
     (__pyx_v_info->format[0]) = '^';
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":273
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":273
  *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
  *                 info.format[0] = '^' # Native data types, manual alignment
  *                 offset = 0             # <<<<<<<<<<<<<<
@@ -8163,7 +8661,7 @@
  */
     __pyx_v_offset = 0;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":276
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":276
  *                 f = _util_dtypestring(descr, info.format + 1,
  *                                       info.format + _buffer_format_string_len,
  *                                       &offset)             # <<<<<<<<<<<<<<
@@ -8173,7 +8671,7 @@
     __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_f = __pyx_t_9;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":277
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":277
  *                                       info.format + _buffer_format_string_len,
  *                                       &offset)
  *                 f[0] = 0 # Terminate format string             # <<<<<<<<<<<<<<
@@ -8205,7 +8703,7 @@
   return __pyx_r;
 }
 
-/* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":279
+/* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":279
  *                 f[0] = 0 # Terminate format string
  * 
  *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
@@ -8218,7 +8716,7 @@
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__releasebuffer__");
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":280
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":280
  * 
  *         def __releasebuffer__(ndarray self, Py_buffer* info):
  *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
@@ -8228,7 +8726,7 @@
   __pyx_t_1 = PyArray_HASFIELDS(((PyArrayObject *)__pyx_v_self));
   if (__pyx_t_1) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":281
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":281
  *         def __releasebuffer__(ndarray self, Py_buffer* info):
  *             if PyArray_HASFIELDS(self):
  *                 stdlib.free(info.format)             # <<<<<<<<<<<<<<
@@ -8240,7 +8738,7 @@
   }
   __pyx_L5:;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":282
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":282
  *             if PyArray_HASFIELDS(self):
  *                 stdlib.free(info.format)
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
@@ -8250,7 +8748,7 @@
   __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
   if (__pyx_t_1) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":283
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":283
  *                 stdlib.free(info.format)
  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
  *                 stdlib.free(info.strides)             # <<<<<<<<<<<<<<
@@ -8265,7 +8763,7 @@
   __Pyx_RefNannyFinishContext();
 }
 
-/* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":756
+/* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":756
  * ctypedef npy_cdouble     complex_t
  * 
  * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
@@ -8278,7 +8776,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew1");
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":757
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":757
  * 
  * cdef inline object PyArray_MultiIterNew1(a):
  *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
@@ -8304,7 +8802,7 @@
   return __pyx_r;
 }
 
-/* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":759
+/* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":759
  *     return PyArray_MultiIterNew(1, <void*>a)
  * 
  * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
@@ -8317,7 +8815,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew2");
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":760
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":760
  * 
  * cdef inline object PyArray_MultiIterNew2(a, b):
  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
@@ -8343,7 +8841,7 @@
   return __pyx_r;
 }
 
-/* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":762
+/* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":762
  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
  * 
  * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
@@ -8356,7 +8854,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew3");
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":763
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":763
  * 
  * cdef inline object PyArray_MultiIterNew3(a, b, c):
  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
@@ -8382,7 +8880,7 @@
   return __pyx_r;
 }
 
-/* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":765
+/* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":765
  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
  * 
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
@@ -8395,7 +8893,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew4");
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":766
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":766
  * 
  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
@@ -8421,7 +8919,7 @@
   return __pyx_r;
 }
 
-/* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":768
+/* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":768
  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
  * 
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
@@ -8434,7 +8932,7 @@
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("PyArray_MultiIterNew5");
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":769
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":769
  * 
  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
@@ -8460,7 +8958,7 @@
   return __pyx_r;
 }
 
-/* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":771
+/* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":771
  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
  * 
  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
@@ -8494,7 +8992,7 @@
   __pyx_v_new_offset = Py_None; __Pyx_INCREF(Py_None);
   __pyx_v_t = Py_None; __Pyx_INCREF(Py_None);
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":778
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":778
  *     cdef int delta_offset
  *     cdef tuple i
  *     cdef int endian_detector = 1             # <<<<<<<<<<<<<<
@@ -8503,7 +9001,7 @@
  */
   __pyx_v_endian_detector = 1;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":779
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":779
  *     cdef tuple i
  *     cdef int endian_detector = 1
  *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
@@ -8512,7 +9010,7 @@
  */
   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":782
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":782
  *     cdef tuple fields
  * 
  *     for childname in descr.names:             # <<<<<<<<<<<<<<
@@ -8531,7 +9029,7 @@
     __pyx_v_childname = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":783
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":783
  * 
  *     for childname in descr.names:
  *         fields = descr.fields[childname]             # <<<<<<<<<<<<<<
@@ -8545,7 +9043,7 @@
     __pyx_v_fields = ((PyObject *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":784
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":784
  *     for childname in descr.names:
  *         fields = descr.fields[childname]
  *         child, new_offset = fields             # <<<<<<<<<<<<<<
@@ -8568,7 +9066,7 @@
       {__pyx_filename = __pyx_f[1]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":786
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":786
  *         child, new_offset = fields
  * 
  *         if (end - f) - (new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
@@ -8593,7 +9091,7 @@
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_6) {
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":787
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":787
  * 
  *         if (end - f) - (new_offset - offset[0]) < 15:
  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
@@ -8602,9 +9100,9 @@
  */
       __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_INCREF(((PyObject *)__pyx_kp_u_15));
-      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_15));
-      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_15));
+      __Pyx_INCREF(((PyObject *)__pyx_kp_u_18));
+      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_kp_u_18));
+      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_18));
       __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -8615,7 +9113,7 @@
     }
     __pyx_L5:;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":789
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":789
  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
  * 
  *         if ((child.byteorder == '>' and little_endian) or             # <<<<<<<<<<<<<<
@@ -8630,7 +9128,7 @@
     }
     if (!__pyx_t_7) {
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":790
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":790
  * 
  *         if ((child.byteorder == '>' and little_endian) or
  *             (child.byteorder == '<' and not little_endian)):             # <<<<<<<<<<<<<<
@@ -8650,7 +9148,7 @@
     }
     if (__pyx_t_6) {
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":791
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":791
  *         if ((child.byteorder == '>' and little_endian) or
  *             (child.byteorder == '<' and not little_endian)):
  *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
@@ -8659,9 +9157,9 @@
  */
       __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_INCREF(((PyObject *)__pyx_kp_u_13));
-      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_13));
-      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_13));
+      __Pyx_INCREF(((PyObject *)__pyx_kp_u_16));
+      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_16));
+      __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_16));
       __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -8672,7 +9170,7 @@
     }
     __pyx_L6:;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":801
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":801
  * 
  *         # Output padding bytes
  *         while offset[0] < new_offset:             # <<<<<<<<<<<<<<
@@ -8689,7 +9187,7 @@
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (!__pyx_t_6) break;
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":802
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":802
  *         # Output padding bytes
  *         while offset[0] < new_offset:
  *             f[0] = 120 # "x"; pad byte             # <<<<<<<<<<<<<<
@@ -8698,7 +9196,7 @@
  */
       (__pyx_v_f[0]) = 120;
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":803
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":803
  *         while offset[0] < new_offset:
  *             f[0] = 120 # "x"; pad byte
  *             f += 1             # <<<<<<<<<<<<<<
@@ -8707,7 +9205,7 @@
  */
       __pyx_v_f += 1;
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":804
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":804
  *             f[0] = 120 # "x"; pad byte
  *             f += 1
  *             offset[0] += 1             # <<<<<<<<<<<<<<
@@ -8717,7 +9215,7 @@
       (__pyx_v_offset[0]) += 1;
     }
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":806
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":806
  *             offset[0] += 1
  * 
  *         offset[0] += child.itemsize             # <<<<<<<<<<<<<<
@@ -8726,7 +9224,7 @@
  */
     (__pyx_v_offset[0]) += __pyx_v_child->elsize;
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":808
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":808
  *         offset[0] += child.itemsize
  * 
  *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
@@ -8736,7 +9234,7 @@
     __pyx_t_6 = (!PyDataType_HASFIELDS(__pyx_v_child));
     if (__pyx_t_6) {
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":809
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":809
  * 
  *         if not PyDataType_HASFIELDS(child):
  *             t = child.type_num             # <<<<<<<<<<<<<<
@@ -8749,7 +9247,7 @@
       __pyx_v_t = __pyx_t_3;
       __pyx_t_3 = 0;
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":810
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":810
  *         if not PyDataType_HASFIELDS(child):
  *             t = child.type_num
  *             if end - f < 5:             # <<<<<<<<<<<<<<
@@ -8759,7 +9257,7 @@
       __pyx_t_6 = ((__pyx_v_end - __pyx_v_f) < 5);
       if (__pyx_t_6) {
 
-        /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":811
+        /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":811
  *             t = child.type_num
  *             if end - f < 5:
  *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
@@ -8768,9 +9266,9 @@
  */
         __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_INCREF(((PyObject *)__pyx_kp_u_16));
-        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_16));
-        __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_16));
+        __Pyx_INCREF(((PyObject *)__pyx_kp_u_19));
+        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_kp_u_19));
+        __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_19));
         __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -8781,7 +9279,7 @@
       }
       __pyx_L10:;
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":814
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":814
  * 
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
@@ -8800,7 +9298,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":815
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":815
  *             # Until ticket #99 is fixed, use integers to avoid warnings
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
@@ -8819,7 +9317,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":816
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":816
  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
@@ -8838,7 +9336,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":817
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":817
  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
@@ -8857,7 +9355,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":818
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":818
  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
@@ -8876,7 +9374,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":819
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":819
  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
@@ -8895,7 +9393,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":820
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":820
  *             elif t == NPY_INT:         f[0] = 105 #"i"
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
@@ -8914,7 +9412,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":821
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":821
  *             elif t == NPY_UINT:        f[0] =  73 #"I"
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
@@ -8933,7 +9431,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":822
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":822
  *             elif t == NPY_LONG:        f[0] = 108 #"l"
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
@@ -8952,7 +9450,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":823
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":823
  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
@@ -8971,7 +9469,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":824
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":824
  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
@@ -8990,7 +9488,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":825
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":825
  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
@@ -9009,7 +9507,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":826
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":826
  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
@@ -9028,7 +9526,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":827
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":827
  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf             # <<<<<<<<<<<<<<
@@ -9049,7 +9547,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":828
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":828
  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd             # <<<<<<<<<<<<<<
@@ -9070,7 +9568,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":829
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":829
  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg             # <<<<<<<<<<<<<<
@@ -9091,7 +9589,7 @@
         goto __pyx_L11;
       }
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":830
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":830
  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
@@ -9111,14 +9609,14 @@
       }
       /*else*/ {
 
-        /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":832
+        /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":832
  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
  *             else:
  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
  *             f += 1
  *         else:
  */
-        __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_14), __pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_17), __pyx_v_t); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(((PyObject *)__pyx_t_3));
         __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
@@ -9134,7 +9632,7 @@
       }
       __pyx_L11:;
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":833
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":833
  *             else:
  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
  *             f += 1             # <<<<<<<<<<<<<<
@@ -9146,7 +9644,7 @@
     }
     /*else*/ {
 
-      /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":837
+      /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":837
  *             # Cython ignores struct boundary information ("T{...}"),
  *             # so don't output it
  *             f = _util_dtypestring(child, f, end, offset)             # <<<<<<<<<<<<<<
@@ -9160,7 +9658,7 @@
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":838
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":838
  *             # so don't output it
  *             f = _util_dtypestring(child, f, end, offset)
  *     return f             # <<<<<<<<<<<<<<
@@ -9189,7 +9687,7 @@
   return __pyx_r;
 }
 
-/* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":953
+/* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":953
  * 
  * 
  * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
@@ -9202,7 +9700,7 @@
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("set_array_base");
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":955
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":955
  * cdef inline void set_array_base(ndarray arr, object base):
  *      cdef PyObject* baseptr
  *      if base is None:             # <<<<<<<<<<<<<<
@@ -9212,7 +9710,7 @@
   __pyx_t_1 = (__pyx_v_base == Py_None);
   if (__pyx_t_1) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":956
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":956
  *      cdef PyObject* baseptr
  *      if base is None:
  *          baseptr = NULL             # <<<<<<<<<<<<<<
@@ -9224,7 +9722,7 @@
   }
   /*else*/ {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":958
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":958
  *          baseptr = NULL
  *      else:
  *          Py_INCREF(base) # important to do this before decref below!             # <<<<<<<<<<<<<<
@@ -9233,7 +9731,7 @@
  */
     Py_INCREF(__pyx_v_base);
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":959
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":959
  *      else:
  *          Py_INCREF(base) # important to do this before decref below!
  *          baseptr = <PyObject*>base             # <<<<<<<<<<<<<<
@@ -9244,7 +9742,7 @@
   }
   __pyx_L3:;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":960
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":960
  *          Py_INCREF(base) # important to do this before decref below!
  *          baseptr = <PyObject*>base
  *      Py_XDECREF(arr.base)             # <<<<<<<<<<<<<<
@@ -9253,7 +9751,7 @@
  */
   Py_XDECREF(__pyx_v_arr->base);
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":961
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":961
  *          baseptr = <PyObject*>base
  *      Py_XDECREF(arr.base)
  *      arr.base = baseptr             # <<<<<<<<<<<<<<
@@ -9265,7 +9763,7 @@
   __Pyx_RefNannyFinishContext();
 }
 
-/* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":963
+/* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":963
  *      arr.base = baseptr
  * 
  * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
@@ -9278,7 +9776,7 @@
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("get_array_base");
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":964
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":964
  * 
  * cdef inline object get_array_base(ndarray arr):
  *     if arr.base is NULL:             # <<<<<<<<<<<<<<
@@ -9288,7 +9786,7 @@
   __pyx_t_1 = (__pyx_v_arr->base == NULL);
   if (__pyx_t_1) {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":965
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":965
  * cdef inline object get_array_base(ndarray arr):
  *     if arr.base is NULL:
  *         return None             # <<<<<<<<<<<<<<
@@ -9303,7 +9801,7 @@
   }
   /*else*/ {
 
-    /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/numpy.pxd":967
+    /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/numpy.pxd":967
  *         return None
  *     else:
  *         return <object>arr.base             # <<<<<<<<<<<<<<
@@ -9390,6 +9888,7 @@
 }
 
 static PyMethodDef __pyx_methods_5scipy_2io_6matlab_10mio5_utils_VarHeader5[] = {
+  {__Pyx_NAMESTR("set_dims"), (PyCFunction)__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarHeader5_set_dims, METH_O, __Pyx_DOCSTR(__pyx_doc_5scipy_2io_6matlab_10mio5_utils_10VarHeader5_set_dims)},
   {0, 0, 0, 0}
 };
 
@@ -9565,7 +10064,6 @@
   p->codecs = Py_None; Py_INCREF(Py_None);
   p->uint16_codec = Py_None; Py_INCREF(Py_None);
   p->cstream = ((struct __pyx_obj_5scipy_2io_6matlab_7streams_GenericStream *)Py_None); Py_INCREF(Py_None);
-  p->preader = Py_None; Py_INCREF(Py_None);
   p->U1_dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
   p->bool_dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
   if (__pyx_pf_5scipy_2io_6matlab_10mio5_utils_10VarReader5___new__(o, a, k) < 0) {
@@ -9579,7 +10077,6 @@
   Py_XDECREF(p->codecs);
   Py_XDECREF(p->uint16_codec);
   Py_XDECREF(((PyObject *)p->cstream));
-  Py_XDECREF(p->preader);
   Py_XDECREF(((PyObject *)p->U1_dtype));
   Py_XDECREF(((PyObject *)p->bool_dtype));
   (*Py_TYPE(o)->tp_free)(o);
@@ -9597,9 +10094,6 @@
   if (p->cstream) {
     e = (*v)(((PyObject*)p->cstream), a); if (e) return e;
   }
-  if (p->preader) {
-    e = (*v)(p->preader, a); if (e) return e;
-  }
   if (p->U1_dtype) {
     e = (*v)(((PyObject*)p->U1_dtype), a); if (e) return e;
   }
@@ -9621,9 +10115,6 @@
   tmp = ((PyObject*)p->cstream);
   p->cstream = ((struct __pyx_obj_5scipy_2io_6matlab_7streams_GenericStream *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->preader);
-  p->preader = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
   tmp = ((PyObject*)p->U1_dtype);
   p->U1_dtype = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
   Py_XDECREF(tmp);
@@ -9846,7 +10337,7 @@
 static struct PyModuleDef __pyx_moduledef = {
     PyModuleDef_HEAD_INIT,
     __Pyx_NAMESTR("mio5_utils"),
-    __Pyx_DOCSTR(__pyx_k_17), /* m_doc */
+    __Pyx_DOCSTR(__pyx_k_20), /* m_doc */
     -1, /* m_size */
     __pyx_methods /* m_methods */,
     NULL, /* m_reload */
@@ -9859,24 +10350,24 @@
 static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
   {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0},
-  {&__pyx_kp_u_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 1, 0, 0},
-  {&__pyx_kp_u_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 1, 0, 0},
-  {&__pyx_kp_u_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 1, 0, 0},
+  {&__pyx_kp_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 0},
+  {&__pyx_kp_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 0},
+  {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},
   {&__pyx_kp_u_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 1, 0, 0},
   {&__pyx_kp_u_15, __pyx_k_15, sizeof(__pyx_k_15), 0, 1, 0, 0},
   {&__pyx_kp_u_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 1, 0, 0},
-  {&__pyx_n_s_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 1, 1},
-  {&__pyx_n_s_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 1, 1},
+  {&__pyx_kp_u_17, __pyx_k_17, sizeof(__pyx_k_17), 0, 1, 0, 0},
+  {&__pyx_kp_u_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 1, 0, 0},
+  {&__pyx_kp_u_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 1, 0, 0},
   {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0},
-  {&__pyx_n_s_20, __pyx_k_20, sizeof(__pyx_k_20), 0, 0, 1, 1},
   {&__pyx_n_s_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 0, 1, 1},
   {&__pyx_n_s_22, __pyx_k_22, sizeof(__pyx_k_22), 0, 0, 1, 1},
   {&__pyx_n_s_23, __pyx_k_23, sizeof(__pyx_k_23), 0, 0, 1, 1},
-  {&__pyx_kp_s_24, __pyx_k_24, sizeof(__pyx_k_24), 0, 0, 1, 0},
-  {&__pyx_kp_s_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 0, 1, 0},
-  {&__pyx_kp_u_26, __pyx_k_26, sizeof(__pyx_k_26), 0, 1, 0, 0},
-  {&__pyx_kp_u_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 1, 0, 0},
-  {&__pyx_kp_u_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 1, 0, 0},
+  {&__pyx_n_s_24, __pyx_k_24, sizeof(__pyx_k_24), 0, 0, 1, 1},
+  {&__pyx_n_s_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 0, 1, 1},
+  {&__pyx_n_s_26, __pyx_k_26, sizeof(__pyx_k_26), 0, 0, 1, 1},
+  {&__pyx_kp_s_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 0, 1, 0},
+  {&__pyx_kp_s_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 0, 1, 0},
   {&__pyx_kp_u_29, __pyx_k_29, sizeof(__pyx_k_29), 0, 1, 0, 0},
   {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0},
   {&__pyx_kp_u_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 1, 0, 0},
@@ -9887,13 +10378,18 @@
   {&__pyx_kp_u_35, __pyx_k_35, sizeof(__pyx_k_35), 0, 1, 0, 0},
   {&__pyx_kp_u_36, __pyx_k_36, sizeof(__pyx_k_36), 0, 1, 0, 0},
   {&__pyx_kp_u_37, __pyx_k_37, sizeof(__pyx_k_37), 0, 1, 0, 0},
+  {&__pyx_kp_u_38, __pyx_k_38, sizeof(__pyx_k_38), 0, 1, 0, 0},
+  {&__pyx_kp_u_39, __pyx_k_39, sizeof(__pyx_k_39), 0, 1, 0, 0},
   {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0},
+  {&__pyx_kp_u_40, __pyx_k_40, sizeof(__pyx_k_40), 0, 1, 0, 0},
+  {&__pyx_kp_u_41, __pyx_k_41, sizeof(__pyx_k_41), 0, 1, 0, 0},
   {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
   {&__pyx_kp_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 0},
   {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0},
   {&__pyx_kp_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 0},
   {&__pyx_kp_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 0},
   {&__pyx_n_s__F, __pyx_k__F, sizeof(__pyx_k__F), 0, 0, 1, 1},
+  {&__pyx_n_s__MDTYPES, __pyx_k__MDTYPES, sizeof(__pyx_k__MDTYPES), 0, 0, 1, 1},
   {&__pyx_n_s__MatlabFunction, __pyx_k__MatlabFunction, sizeof(__pyx_k__MatlabFunction), 0, 0, 1, 1},
   {&__pyx_n_s__MatlabObject, __pyx_k__MatlabObject, sizeof(__pyx_k__MatlabObject), 0, 0, 1, 1},
   {&__pyx_n_s__MatlabOpaque, __pyx_k__MatlabOpaque, sizeof(__pyx_k__MatlabOpaque), 0, 0, 1, 1},
@@ -9904,6 +10400,7 @@
   {&__pyx_n_s__U, __pyx_k__U, sizeof(__pyx_k__U), 0, 0, 1, 1},
   {&__pyx_n_s__U1_dtype, __pyx_k__U1_dtype, sizeof(__pyx_k__U1_dtype), 0, 0, 1, 1},
   {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s__VarHeader5, __pyx_k__VarHeader5, sizeof(__pyx_k__VarHeader5), 0, 0, 1, 1},
   {&__pyx_n_s__VarReader5, __pyx_k__VarReader5, sizeof(__pyx_k__VarReader5), 0, 0, 1, 1},
   {&__pyx_n_s____dict__, __pyx_k____dict__, sizeof(__pyx_k____dict__), 0, 0, 1, 1},
   {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
@@ -9926,6 +10423,7 @@
   {&__pyx_n_s__chars_as_strings, __pyx_k__chars_as_strings, sizeof(__pyx_k__chars_as_strings), 0, 0, 1, 1},
   {&__pyx_n_s__chars_to_strings, __pyx_k__chars_to_strings, sizeof(__pyx_k__chars_to_strings), 0, 0, 1, 1},
   {&__pyx_n_s__class_dtypes, __pyx_k__class_dtypes, sizeof(__pyx_k__class_dtypes), 0, 0, 1, 1},
+  {&__pyx_n_s__classes, __pyx_k__classes, sizeof(__pyx_k__classes), 0, 0, 1, 1},
   {&__pyx_n_s__codecs, __pyx_k__codecs, sizeof(__pyx_k__codecs), 0, 0, 1, 1},
   {&__pyx_n_s__copy, __pyx_k__copy, sizeof(__pyx_k__copy), 0, 0, 1, 1},
   {&__pyx_n_s__cread_fieldnames, __pyx_k__cread_fieldnames, sizeof(__pyx_k__cread_fieldnames), 0, 0, 1, 1},
@@ -9940,6 +10438,8 @@
   {&__pyx_n_s__dtype, __pyx_k__dtype, sizeof(__pyx_k__dtype), 0, 0, 1, 1},
   {&__pyx_n_s__dtypes, __pyx_k__dtypes, sizeof(__pyx_k__dtypes), 0, 0, 1, 1},
   {&__pyx_n_s__empty, __pyx_k__empty, sizeof(__pyx_k__empty), 0, 0, 1, 1},
+  {&__pyx_n_s__encode, __pyx_k__encode, sizeof(__pyx_k__encode), 0, 0, 1, 1},
+  {&__pyx_n_s__enumerate, __pyx_k__enumerate, sizeof(__pyx_k__enumerate), 0, 0, 1, 1},
   {&__pyx_n_s__fields, __pyx_k__fields, sizeof(__pyx_k__fields), 0, 0, 1, 1},
   {&__pyx_n_s__format, __pyx_k__format, sizeof(__pyx_k__format), 0, 0, 1, 1},
   {&__pyx_n_s__header, __pyx_k__header, sizeof(__pyx_k__header), 0, 0, 1, 1},
@@ -9998,6 +10498,7 @@
   {&__pyx_n_s__s2, __pyx_k__s2, sizeof(__pyx_k__s2), 0, 0, 1, 1},
   {&__pyx_n_s__scipy, __pyx_k__scipy, sizeof(__pyx_k__scipy), 0, 0, 1, 1},
   {&__pyx_n_s__seek, __pyx_k__seek, sizeof(__pyx_k__seek), 0, 0, 1, 1},
+  {&__pyx_n_s__set_dims, __pyx_k__set_dims, sizeof(__pyx_k__set_dims), 0, 0, 1, 1},
   {&__pyx_n_s__set_stream, __pyx_k__set_stream, sizeof(__pyx_k__set_stream), 0, 0, 1, 1},
   {&__pyx_n_s__shape, __pyx_k__shape, sizeof(__pyx_k__shape), 0, 0, 1, 1},
   {&__pyx_n_s__size_from_header, __pyx_k__size_from_header, sizeof(__pyx_k__size_from_header), 0, 0, 1, 1},
@@ -10018,10 +10519,11 @@
   {0, 0, 0, 0, 0, 0, 0}
 };
 static int __Pyx_InitCachedBuiltins(void) {
-  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_object = __Pyx_GetName(__pyx_b, __pyx_n_s__object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_enumerate = __Pyx_GetName(__pyx_b, __pyx_n_s__enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_object = __Pyx_GetName(__pyx_b, __pyx_n_s__object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   return 0;
   __pyx_L1_error:;
@@ -10030,6 +10532,7 @@
 
 static int __Pyx_InitGlobals(void) {
   if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
@@ -10076,7 +10579,7 @@
   #endif
   /*--- Module creation code ---*/
   #if PY_MAJOR_VERSION < 3
-  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("mio5_utils"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_17), 0, PYTHON_API_VERSION);
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("mio5_utils"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_20), 0, PYTHON_API_VERSION);
   #else
   __pyx_m = PyModule_Create(&__pyx_moduledef);
   #endif
@@ -10098,8 +10601,8 @@
   __pyx_v_5scipy_2io_6matlab_10mio5_utils_OPAQUE_DTYPE = ((PyArray_Descr *)Py_None); Py_INCREF(Py_None);
   /*--- Function export code ---*/
   /*--- Type init code ---*/
-  if (PyType_Ready(&__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarHeader5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetAttrString(__pyx_m, "VarHeader5", (PyObject *)&__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarHeader5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarHeader5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "VarHeader5", (PyObject *)&__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarHeader5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarHeader5 = &__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarHeader5;
   __pyx_vtabptr_5scipy_2io_6matlab_10mio5_utils_VarReader5 = &__pyx_vtable_5scipy_2io_6matlab_10mio5_utils_VarReader5;
   #if PY_MAJOR_VERSION >= 3
@@ -10141,9 +10644,9 @@
   *(void(**)(void))&__pyx_vtable_5scipy_2io_6matlab_10mio5_utils_VarReader5.read_struct = (void(*)(void))__pyx_f_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_struct;
   *(void(**)(void))&__pyx_vtable_5scipy_2io_6matlab_10mio5_utils_VarReader5.read_opaque = (void(*)(void))__pyx_f_5scipy_2io_6matlab_10mio5_utils_10VarReader5_read_opaque;
   #endif
-  if (PyType_Ready(&__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarReader5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetVtable(__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarReader5.tp_dict, __pyx_vtabptr_5scipy_2io_6matlab_10mio5_utils_VarReader5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_SetAttrString(__pyx_m, "VarReader5", (PyObject *)&__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarReader5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarReader5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarReader5.tp_dict, __pyx_vtabptr_5scipy_2io_6matlab_10mio5_utils_VarReader5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "VarReader5", (PyObject *)&__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarReader5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_5scipy_2io_6matlab_10mio5_utils_VarReader5 = &__pyx_type_5scipy_2io_6matlab_10mio5_utils_VarReader5;
   /*--- Type import code ---*/
   __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), 0); if (unlikely(!__pyx_ptype_7cpython_4bool_bool)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -10160,7 +10663,7 @@
   Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   /*--- Execution code ---*/
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":15
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":15
  * '''
  * 
  * import sys             # <<<<<<<<<<<<<<
@@ -10172,12 +10675,12 @@
   if (PyObject_SetAttr(__pyx_m, __pyx_n_s__sys, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":17
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":17
  * import sys
  * 
  * from copy import copy as pycopy             # <<<<<<<<<<<<<<
  * 
- * from cpython cimport Py_INCREF, Py_DECREF
+ * from libc.stdlib cimport calloc, free
  */
   __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
@@ -10193,26 +10696,26 @@
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":29
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":32
  *     PyBytes_FromStringAndSize
  * 
  * import numpy as np             # <<<<<<<<<<<<<<
  * from numpy.compat import asbytes, asstr
  * cimport numpy as cnp
  */
-  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":30
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":33
  * 
  * import numpy as np
  * from numpy.compat import asbytes, asstr             # <<<<<<<<<<<<<<
  * cimport numpy as cnp
  * 
  */
-  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_3));
   __Pyx_INCREF(((PyObject *)__pyx_n_s__asbytes));
   PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_n_s__asbytes));
@@ -10220,20 +10723,20 @@
   __Pyx_INCREF(((PyObject *)__pyx_n_s__asstr));
   PyList_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__asstr));
   __Pyx_GIVEREF(((PyObject *)__pyx_n_s__asstr));
-  __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s_18), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s_21), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__asbytes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__asbytes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__asbytes, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__asbytes, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__asstr); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__asstr); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__asstr, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__asstr, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":49
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":52
  * # Numpy must be initialized before any code using the numpy C-API
  * # directly
  * cnp.import_array()             # <<<<<<<<<<<<<<
@@ -10242,32 +10745,32 @@
  */
   import_array();
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":59
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":62
  * 
  * cimport streams
  * import scipy.io.matlab.miobase as miob             # <<<<<<<<<<<<<<
  * from scipy.io.matlab.mio_utils import squeeze_element, chars_to_strings
  * import scipy.io.matlab.mio5_params as mio5p
  */
-  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
-  __Pyx_INCREF(((PyObject *)__pyx_n_s_20));
-  PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s_20));
-  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_20));
-  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s_19), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF(((PyObject *)__pyx_n_s_23));
+  PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s_23));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_23));
+  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s_22), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__miob, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__miob, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":60
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":63
  * cimport streams
  * import scipy.io.matlab.miobase as miob
  * from scipy.io.matlab.mio_utils import squeeze_element, chars_to_strings             # <<<<<<<<<<<<<<
  * import scipy.io.matlab.mio5_params as mio5p
  * import scipy.sparse
  */
-  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_3));
   __Pyx_INCREF(((PyObject *)__pyx_n_s__squeeze_element));
   PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_n_s__squeeze_element));
@@ -10275,153 +10778,163 @@
   __Pyx_INCREF(((PyObject *)__pyx_n_s__chars_to_strings));
   PyList_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__chars_to_strings));
   __Pyx_GIVEREF(((PyObject *)__pyx_n_s__chars_to_strings));
-  __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s_21), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s_24), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__squeeze_element); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__squeeze_element); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__squeeze_element, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__squeeze_element, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__chars_to_strings); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__chars_to_strings); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__chars_to_strings, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__chars_to_strings, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":61
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":64
  * import scipy.io.matlab.miobase as miob
  * from scipy.io.matlab.mio_utils import squeeze_element, chars_to_strings
  * import scipy.io.matlab.mio5_params as mio5p             # <<<<<<<<<<<<<<
  * import scipy.sparse
  * 
  */
-  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
-  __Pyx_INCREF(((PyObject *)__pyx_n_s_20));
-  PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s_20));
-  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_20));
-  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s_22), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF(((PyObject *)__pyx_n_s_23));
+  PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s_23));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_23));
+  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s_25), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__mio5p, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__mio5p, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":62
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":65
  * from scipy.io.matlab.mio_utils import squeeze_element, chars_to_strings
  * import scipy.io.matlab.mio5_params as mio5p
  * import scipy.sparse             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s_23), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s_26), 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__scipy, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__scipy, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":102
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":105
  *     mxOBJECT_CLASS_FROM_MATRIX_H = 18
  * 
  * sys_is_le = sys.byteorder == 'little'             # <<<<<<<<<<<<<<
  * native_code = sys_is_le and '<' or '>'
  * swapped_code = sys_is_le and '>' or '<'
  */
-  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__byteorder); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__byteorder); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, ((PyObject *)__pyx_n_s__little), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, ((PyObject *)__pyx_n_s__little), Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__sys_is_le, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__sys_is_le, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":103
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":106
  * 
  * sys_is_le = sys.byteorder == 'little'
  * native_code = sys_is_le and '<' or '>'             # <<<<<<<<<<<<<<
  * swapped_code = sys_is_le and '>' or '<'
  * 
  */
-  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys_is_le); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys_is_le); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_4) {
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_INCREF(((PyObject *)__pyx_kp_s_24));
-    __pyx_t_2 = __pyx_kp_s_24;
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_27));
+    __pyx_t_2 = __pyx_kp_s_27;
   } else {
     __pyx_t_2 = __pyx_t_3;
     __pyx_t_3 = 0;
   }
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_4) {
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_INCREF(((PyObject *)__pyx_kp_s_25));
-    __pyx_t_3 = __pyx_kp_s_25;
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_28));
+    __pyx_t_3 = __pyx_kp_s_28;
   } else {
     __pyx_t_3 = __pyx_t_2;
     __pyx_t_2 = 0;
   }
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__native_code, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__native_code, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":104
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":107
  * sys_is_le = sys.byteorder == 'little'
  * native_code = sys_is_le and '<' or '>'
  * swapped_code = sys_is_le and '>' or '<'             # <<<<<<<<<<<<<<
  * 
  * cdef cnp.dtype OPAQUE_DTYPE = mio5p.OPAQUE_DTYPE
  */
-  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys_is_le); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys_is_le); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_4) {
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_INCREF(((PyObject *)__pyx_kp_s_25));
-    __pyx_t_2 = __pyx_kp_s_25;
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_28));
+    __pyx_t_2 = __pyx_kp_s_28;
   } else {
     __pyx_t_2 = __pyx_t_3;
     __pyx_t_3 = 0;
   }
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_4) {
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_INCREF(((PyObject *)__pyx_kp_s_24));
-    __pyx_t_3 = __pyx_kp_s_24;
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_27));
+    __pyx_t_3 = __pyx_kp_s_27;
   } else {
     __pyx_t_3 = __pyx_t_2;
     __pyx_t_2 = 0;
   }
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__swapped_code, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__swapped_code, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":106
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":109
  * swapped_code = sys_is_le and '>' or '<'
  * 
  * cdef cnp.dtype OPAQUE_DTYPE = mio5p.OPAQUE_DTYPE             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__mio5p); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__OPAQUE_DTYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__OPAQUE_DTYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_v_5scipy_2io_6matlab_10mio5_utils_OPAQUE_DTYPE));
   __Pyx_DECREF(((PyObject *)__pyx_v_5scipy_2io_6matlab_10mio5_utils_OPAQUE_DTYPE));
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_v_5scipy_2io_6matlab_10mio5_utils_OPAQUE_DTYPE = ((PyArray_Descr *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "/home/pauli/wrk/scipy/scipy/scipy/io/matlab/mio5_utils.pyx":1
+  /* "/Users/mb312/dev_trees/scipy-work/scipy/io/matlab/mio5_utils.pyx":1
  * ''' Cython mio5 utility routines (-*- python -*- like)             # <<<<<<<<<<<<<<
  * 
  * '''
  */
   __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarHeader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__set_dims); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_29), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_5 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__set_stream); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -10430,7 +10943,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_26), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_30), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10440,7 +10953,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_27), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_31), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10450,7 +10963,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_28), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_32), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10460,7 +10973,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_29), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_33), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10470,7 +10983,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_30), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_34), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10480,7 +10993,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_31), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_35), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10490,7 +11003,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_32), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_36), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10500,7 +11013,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_33), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_37), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10510,7 +11023,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_34), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_38), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10520,7 +11033,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_35), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_39), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10530,7 +11043,7 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_36), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_40), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = PyObject_GetAttr(__pyx_m, __pyx_n_s__VarReader5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
@@ -10540,12 +11053,12 @@
   __pyx_t_3 = __Pyx_GetAttrString(__pyx_t_5, "__doc__"); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_37), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_kp_u_41), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
 
-  /* "/usr/local/lib/python2.6/dist-packages/Cython-0.13-py2.6-linux-i686.egg/Cython/Includes/cpython/type.pxd":2
+  /* "/Users/mb312/usr/local/lib/python2.6/site-packages/Cython/Includes/cpython/type.pxd":2
  * 
  * cdef extern from "Python.h":             # <<<<<<<<<<<<<<
  *     # The C structure of the objects used to describe built-in types.
@@ -11377,6 +11890,58 @@
     }
 }
 
+static CYTHON_INLINE npy_int32 __Pyx_PyInt_from_py_npy_int32(PyObject* x) {
+    const npy_int32 neg_one = (npy_int32)-1, const_zero = (npy_int32)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(npy_int32) == sizeof(char)) {
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(npy_int32) == sizeof(short)) {
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(npy_int32) == sizeof(int)) {
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(npy_int32) == sizeof(long)) {
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(npy_int32) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (npy_int32)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (npy_int32)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        npy_int32 val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        return (npy_int32)-1;
+    }
+}
+
 #if PY_MAJOR_VERSION < 3
 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
     Py_XINCREF(type);

Modified: trunk/scipy/io/matlab/mio5_utils.pyx
===================================================================
--- trunk/scipy/io/matlab/mio5_utils.pyx	2010-11-12 00:56:28 UTC (rev 6865)
+++ trunk/scipy/io/matlab/mio5_utils.pyx	2010-11-12 00:56:41 UTC (rev 6866)
@@ -16,6 +16,9 @@
 
 from copy import copy as pycopy
 
+from libc.stdlib cimport calloc, free
+from libc.string cimport strcmp, strlen
+
 from cpython cimport Py_INCREF, Py_DECREF
 from cpython cimport PyObject
 
@@ -833,14 +836,34 @@
         cdef object names = self.read_int8_string()
         field_names = []
         n_names = PyBytes_Size(names) // namelength
-        cdef char *n_ptr = names
+        # Make n_duplicates and pointer arrays
+        cdef:
+            int *n_duplicates
+            char **name_ptrs
+        n_duplicates = <int *>calloc(n_names, sizeof(int))
+        name_ptrs = <char **>calloc(n_names, sizeof(char *))
+        cdef:
+            char *n_ptr = names
+            int j, dup_no
         for i in range(n_names):
-            name = PyBytes_FromString(n_ptr)
-            field_names.append(asstr(name))
+            name = asstr(PyBytes_FromString(n_ptr))
+            # Check if this is a duplicate field, rename if so
+            name_ptrs[i] = n_ptr
+            dup_no = 0
+            for j in range(i):
+                if strcmp(n_ptr, name_ptrs[j]) == 0: # the same
+                    n_duplicates[j] += 1
+                    dup_no = n_duplicates[j]
+                    break
+            if dup_no != 0:
+                name = '_%d_%s' % (dup_no, name)
+            field_names.append(name)
             n_ptr += namelength
+        free(n_duplicates)
+        free(name_ptrs)
         n_names_ptr[0] = n_names
         return field_names
-        
+
     cpdef cnp.ndarray read_struct(self, VarHeader5 header):
         ''' Read struct or object array from stream
 

Modified: trunk/scipy/io/matlab/tests/test_mio.py
===================================================================
--- trunk/scipy/io/matlab/tests/test_mio.py	2010-11-12 00:56:28 UTC (rev 6865)
+++ trunk/scipy/io/matlab/tests/test_mio.py	2010-11-12 00:56:41 UTC (rev 6866)
@@ -636,12 +636,12 @@
     savemat_future(stream, {'c': c})
     d = loadmat(stream, struct_as_record=False)
     c2 = d['c'][0,0]
-    yield assert_equal, c2.field1, 1
-    yield assert_equal, c2.field2, 'a string'
+    assert_equal(c2.field1, 1)
+    assert_equal(c2.field2, 'a string')
     d = loadmat(stream, struct_as_record=True)
     c2 = d['c'][0,0]
-    yield assert_equal, c2['field1'], 1
-    yield assert_equal, c2['field2'], 'a string'
+    assert_equal(c2['field1'], 1)
+    assert_equal(c2['field2'], 'a string')
 
 
 def test_read_opts():
@@ -790,5 +790,15 @@
     res = loadmat(stream)
     assert_array_equal(res['a'], out_arr_u)
 
+
+def test_fieldnames():
+    # Check that field names are as expected
+    stream = BytesIO()
+    savemat_future(stream, {'a': {'a':1, 'b':2}})
+    res = loadmat(stream)
+    field_names = res['a'].dtype.names
+    assert_equal(set(field_names), set(('a', 'b')))
+
+
 if __name__ == "__main__":
     run_module_suite()

Modified: trunk/scipy/io/matlab/tests/test_pathological.py
===================================================================
--- trunk/scipy/io/matlab/tests/test_pathological.py	2010-11-12 00:56:28 UTC (rev 6865)
+++ trunk/scipy/io/matlab/tests/test_pathological.py	2010-11-12 00:56:41 UTC (rev 6866)
@@ -29,3 +29,6 @@
     # Extracted using mio5.varmats_from_mat
     multi_fname = pjoin(TEST_DATA_PATH, 'nasty_duplicate_fieldnames.mat')
     vars = loadmat(multi_fname)
+    funny_names = vars['Summary'].dtype.names
+    assert_true(set(['_1_Station_Q', '_2_Station_Q',
+                     '_3_Station_Q']).issubset(funny_names))




More information about the Scipy-svn mailing list