diff --git a/compute/pzunmlq_param.c b/compute/pzunmlq_param.c
index 49c48106003b99fb177296f6db6004c80beb1766..5c584c680383a3e7975c27a575d6ec49ea539374 100644
--- a/compute/pzunmlq_param.c
+++ b/compute/pzunmlq_param.c
@@ -306,6 +306,7 @@ void morse_pzunmlq_param(const libhqr_tree_t *qrtree,
                     else {
                         for (m = 0; m < B->mt; m++) {
                             tempmm = m == B->mt-1 ? B->m-m*B->mb : B->mb;
+                            ldbm = BLKLDD(B, m);
                             MORSE_TASK_zttmlq(
                                 &options,
                                 side, trans,
@@ -406,6 +407,7 @@ void morse_pzunmlq_param(const libhqr_tree_t *qrtree,
                     if(qrtree->gettype(qrtree, k, n) == 0){
                         for (m = 0; m < B->mt; m++) {
                             tempmm = m == B->mt-1 ? B->m-m*B->mb : B->mb;
+                            ldbm = BLKLDD(B, m);
                             MORSE_TASK_ztsmlq(
                                 &options,
                                 side, trans,
@@ -419,6 +421,7 @@ void morse_pzunmlq_param(const libhqr_tree_t *qrtree,
                     else {
                         for (m = 0; m < B->mt; m++) {
                             tempmm = m == B->mt-1 ? B->m-m*B->mb : B->mb;
+                            ldbm = BLKLDD(B, m);
                             MORSE_TASK_zttmlq(
                                 &options,
                                 side, trans,
diff --git a/timing/time_zgeqrf_hqr.c b/timing/time_zgeqrf_hqr.c
new file mode 100644
index 0000000000000000000000000000000000000000..a475afb035becb399fc5d328678dcab1bdfc9324
--- /dev/null
+++ b/timing/time_zgeqrf_hqr.c
@@ -0,0 +1,84 @@
+/**
+ *
+ * @copyright (c) 2009-2014 The University of Tennessee and The University
+ *                          of Tennessee Research Foundation.
+ *                          All rights reserved.
+ * @copyright (c) 2012-2014 Inria. All rights reserved.
+ * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
+ *
+ **/
+
+/**
+ *
+ * @precisions normal z -> c d s
+ *
+ **/
+#define _TYPE  MORSE_Complex64_t
+#define _PREC  double
+#define _LAMCH LAPACKE_dlamch_work
+
+#define _NAME  "MORSE_zgeqrf_param"
+/* See Lawn 41 page 120 */
+#define _FMULS FMULS_GEQRF(M, N)
+#define _FADDS FADDS_GEQRF(M, N)
+
+#include "./timing.c"
+#include "timing_zauxiliary.h"
+
+static int
+RunTest(int *iparam, double *dparam, morse_time_t *t_)
+{
+    MORSE_desc_t *TS;
+    MORSE_desc_t *TT;
+    PASTE_CODE_IPARAM_LOCALS( iparam );
+
+    if ( M != N && check ) {
+        fprintf(stderr, "Check cannot be perfomed with M != N\n");
+        check = 0;
+    }
+
+    /* Allocate Data */
+    PASTE_CODE_ALLOCATE_MATRIX( A, 1, MORSE_Complex64_t, LDA, N );
+
+    /* Initialize Data */
+    MORSE_zplrnt(M, N, A, LDA, 3456);
+
+    /* Allocate Workspace */
+    MORSE_Alloc_Workspace_zgels(M, N, &TS, P, Q);
+    memset(TS->mat, 0, (TS->llm*TS->lln)*sizeof(MorseComplexDouble));
+    MORSE_Alloc_Workspace_zgels(M, N, &TT P, Q);
+    memset(TT->mat, 0, (TT->llm*TT->lln)*sizeof(MorseComplexDouble));
+
+    /* Save AT in lapack layout for check */
+    PASTE_CODE_ALLOCATE_COPY( Acpy, check, MORSE_Complex64_t, A, LDA, N );
+
+    START_TIMING();
+    MORSE_zgeqrf( M, N, A, LDA, TS );
+    STOP_TIMING();
+
+    /* Check the solution */
+    if ( check )
+    {
+        PASTE_CODE_ALLOCATE_MATRIX( X, 1, MORSE_Complex64_t, LDB, NRHS );
+        MORSE_zplrnt( N, NRHS, X, LDB, 5673 );
+        PASTE_CODE_ALLOCATE_COPY( B, 1, MORSE_Complex64_t, X, LDB, NRHS );
+
+        MORSE_zgeqrs(M, N, NRHS, A, LDA, TS, X, LDB);
+
+        dparam[IPARAM_RES] = z_check_solution(M, N, NRHS, Acpy, LDA, B, X, LDB,
+                                              &(dparam[IPARAM_ANORM]),
+                                              &(dparam[IPARAM_BNORM]),
+                                              &(dparam[IPARAM_XNORM]));
+
+        free( Acpy );
+        free( B );
+        free( X );
+      }
+
+    /* Free Workspace */
+    MORSE_Dealloc_Workspace( &TS );
+    MORSE_Dealloc_Workspace( &TT );
+    free( A );
+
+    return 0;
+}
diff --git a/timing/timing.h b/timing/timing.h
index 561fed157cdd380d077c4b6c4a52c5eda194fd71..51d8f3dfd8469e8a0a69ec946a03ec45205884df 100644
--- a/timing/timing.h
+++ b/timing/timing.h
@@ -63,6 +63,17 @@ enum iparam_timing {
     IPARAM_BOUNDDEPS,
     IPARAM_BOUNDDEPSPRIO,
     /* End */
+    /* Added for libhqr version */
+    IPARAM_NNODES,       /* Number of nodes                             */
+    IPARAM_GP,           /* Rows in the process grid                    */
+    IPARAM_GQ,           /* Columns in the process grid                 */
+    IPARAM_LOWLVL_TREE,  /* Tree used for reduction inside nodes        */
+    IPARAM_HIGHLVL_TREE, /* Tree used for reduction between nodes       */
+    IPARAM_QR_TS_SZE,    /* Size of TS domain                           */
+    IPARAM_QR_HLVL_SZE,  /* Size of the high level tree                 */
+    IPARAM_QR_DOMINO,    /* Enable/disable the domino tree              */
+    IPARAM_QR_TSRR,      /* Enable/disable the round-robin on TS domain */
+    /* End */
     IPARAM_SIZEOF
 };