diff --git a/z_spm_matrixvector.c b/z_spm_matrixvector.c
index e5346ebf9c67c735626e2a43394b9f99133dcc5d..854c711a53547240c4152cf51abf321bf81cc1e1 100644
--- a/z_spm_matrixvector.c
+++ b/z_spm_matrixvector.c
@@ -314,9 +314,13 @@ z_spmHeCSCv(      pastix_complex64_t  alpha,
             for( i=csc->colptr[col]; i < csc->colptr[col+1]; i++ )
             {
                 row=csc->rowptr[i-baseval]-baseval;
-                yptr[row] += alpha * valptr[i-baseval] * xptr[col];
-                if( col != row )
+                if( col != row ) {
+                    yptr[row] += alpha * valptr[i-baseval] * xptr[col];
                     yptr[col] += alpha * conj( valptr[i-baseval] ) * xptr[row];
+                }
+                else {
+                    yptr[row] += alpha * creal(valptr[i-baseval]) * xptr[col];
+                }
             }
         }
     }