diff --git a/spm_dofs.c b/spm_dofs.c
index 3547bd99d1b4efc4ed7aa8f2d601936325c8f103..8d9fa3cdc9b752e4d9a0e97b6044757c3a330e2a 100644
--- a/spm_dofs.c
+++ b/spm_dofs.c
@@ -64,14 +64,14 @@ spmDofExtend( const int type,
          * Initialize the dofs array where the degree of freedom of vertex i is
          * dof[i+1] - dof[i]
          */
-        *dofptr = 0;
+        *dofptr = baseval;
         for(i=0; i<spm->n; i++, dofptr++) {
             dofi = 1 + ( rand() % dof );
             dofptr[1] = dofptr[0] + dofi;
         }
 
-        newspm->nexp  = *dofptr;
-        newspm->gNexp = *dofptr;
+        newspm->nexp  = *dofptr - baseval;
+        newspm->gNexp = newspm->nexp;
 
         /**
          * Count the number of non zeroes
diff --git a/z_spm_print.c b/z_spm_print.c
index 5dae4b220cd92b0a10f5afa8647edd417cf5e10b..a51561c9295c828d3fe3fb0a731626261d2dd97b 100644
--- a/z_spm_print.c
+++ b/z_spm_print.c
@@ -49,13 +49,13 @@ z_spmCSCPrint( FILE *f, const pastix_spm_t *spm )
         for(j=0; j<spm->n; j++, colptr++)
         {
             dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
             for(k=colptr[0]; k<colptr[1]; k++, rowptr++)
             {
                 i = (*rowptr - baseval);
                 dofi = ( spm->dof > 0 ) ? spm->dof : dofs[i+1] - dofs[i];
-                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -93,13 +93,13 @@ z_spmCSCPrint( FILE *f, const pastix_spm_t *spm )
         for(j=0; j<spm->n; j++, colptr++)
         {
             dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
             for(k=colptr[0]; k<colptr[1]; k++, rowptr++)
             {
                 i = (*rowptr - baseval);
                 dofi = ( spm->dof > 0 ) ? spm->dof     : dofs[i+1] - dofs[i];
-                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -137,13 +137,13 @@ z_spmCSCPrint( FILE *f, const pastix_spm_t *spm )
         for(j=0; j<spm->n; j++, colptr++)
         {
             dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
             for(k=colptr[0]; k<colptr[1]; k++, rowptr++)
             {
                 i = (*rowptr - baseval);
                 dofi = ( spm->dof > 0 ) ? spm->dof     : dofs[i+1] - dofs[i];
-                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -194,13 +194,13 @@ z_spmCSRPrint( FILE *f, const pastix_spm_t *spm )
         for(i=0; i<spm->n; i++, rowptr++)
         {
             dofi = ( spm->dof > 0 ) ? spm->dof     : dofs[i+1] - dofs[i];
-            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
             for(k=rowptr[0]; k<rowptr[1]; k++, colptr++)
             {
                 j = (*colptr - baseval);
                 dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -238,13 +238,13 @@ z_spmCSRPrint( FILE *f, const pastix_spm_t *spm )
         for(i=0; i<spm->n; i++, rowptr++)
         {
             dofi = ( spm->dof > 0 ) ? spm->dof     : dofs[i+1] - dofs[i];
-            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
             for(k=rowptr[0]; k<rowptr[1]; k++, colptr++)
             {
                 j = (*colptr - baseval);
                 dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -282,13 +282,13 @@ z_spmCSRPrint( FILE *f, const pastix_spm_t *spm )
         for(i=0; i<spm->n; i++, rowptr++)
         {
             dofi = ( spm->dof > 0 ) ? spm->dof     : dofs[i+1] - dofs[i];
-            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
             for(k=rowptr[0]; k<rowptr[1]; k++, colptr++)
             {
                 j = (*colptr - baseval);
                 dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -349,9 +349,9 @@ z_spmIJVPrint( FILE *f, const pastix_spm_t *spm )
             }
             else {
                 dofi = dofs[i+1] - dofs[i];
-                row  = dofs[i];
+                row  = dofs[i] - baseval;
                 dofj = dofs[j+1] - dofs[j];
-                col  = dofs[j];
+                col  = dofs[j] - baseval;
             }
 
             if ( spm->layout == PastixColMajor ) {
@@ -399,9 +399,9 @@ z_spmIJVPrint( FILE *f, const pastix_spm_t *spm )
             }
             else {
                 dofi = dofs[i+1] - dofs[i];
-                row  = dofs[i];
+                row  = dofs[i] - baseval;
                 dofj = dofs[j+1] - dofs[j];
-                col  = dofs[j];
+                col  = dofs[j] - baseval;
             }
 
             if ( spm->layout == PastixColMajor ) {
@@ -449,9 +449,9 @@ z_spmIJVPrint( FILE *f, const pastix_spm_t *spm )
             }
             else {
                 dofi = dofs[i+1] - dofs[i];
-                row  = dofs[i];
+                row  = dofs[i] - baseval;
                 dofj = dofs[j+1] - dofs[j];
-                col  = dofs[j];
+                col  = dofs[j] - baseval;
             }
 
             if ( spm->layout == PastixColMajor ) {