diff --git a/runtime/starpu/codelets/codelet_zgemm.c b/runtime/starpu/codelets/codelet_zgemm.c
index d7d93512a7bce72954511f3f213d11c07dd142ee..912b44f1391cebe46b3434bff9df80cdb9c799fa 100644
--- a/runtime/starpu/codelets/codelet_zgemm.c
+++ b/runtime/starpu/codelets/codelet_zgemm.c
@@ -142,7 +142,7 @@ void INSERT_TASK_zgemm( const RUNTIME_option_t *options,
     callback = options->profiling ? cl_zgemm_callback : NULL;
 
     /* Reduce the C access if needed */
-    accessC = ( beta == 0. ) ? STARPU_W : STARPU_RW;
+    accessC = ( beta == 0. ) ? STARPU_W : (STARPU_RW | ((beta == 1.) ? STARPU_COMMUTE : 0));
 
 #if defined(CHAMELEON_KERNELS_TRACE)
     {