diff --git a/compute/pztile.c b/compute/pztile.c
index 4f94eebb8a8de1748288a873d1092d62edfea016..1732f5bd0534e0c435734cfefc296578ab5a5c25 100644
--- a/compute/pztile.c
+++ b/compute/pztile.c
@@ -26,151 +26,135 @@
  **/
 #include "control/common.h"
 
-#define A(m, n) dA, m, n
-#define B(m, n) &dB, m, n
+#define A(m, n) A, m, n
+#define B(m, n) &B, m, n
 
 /*******************************************************************************
  *  Conversion from LAPACK F77 matrix layout to tile layout - dynamic scheduling
  **/
-void morse_pzlapack_to_tile(MORSE_Complex64_t *Af77, int lda, MORSE_desc_t *dA,
+void morse_pzlapack_to_tile(MORSE_Complex64_t *Af77, int ldaf77, MORSE_desc_t *A,
                             MORSE_sequence_t *sequence, MORSE_request_t *request)
 {
     MORSE_context_t *morse;
     MORSE_option_t options;
-    MORSE_desc_t dB;
-    int X1, Y1;
-    int X2, Y2;
-    int n, m, ldt;
+    MORSE_desc_t B;
+    int m, n;
+    int ldam;
+    int tempmm, tempnn;
 
     morse = morse_context_self();
     if (sequence->status != MORSE_SUCCESS)
         return;
     RUNTIME_options_init(&options, morse, sequence, request);
 
-    dB = morse_desc_init(
-        MorseComplexDouble, dA->mb, dA->nb, dA->bsiz,
-        lda, dA->n, dA->i, dA->j, dA->m, dA->n, 1, 1);
+    B = morse_desc_init(
+        MorseComplexDouble, A->mb, A->nb, A->bsiz,
+        ldaf77, A->n, 0, 0, A->m, A->n, 1, 1);
 
-    dB.get_blkaddr = morse_getaddr_cm;
-    dB.get_blkldd  = morse_getblkldd_cm;
-    dB.mat = Af77;
-    dB.styp = MorseCM;
+    B.get_blkaddr = morse_getaddr_cm;
+    B.get_blkldd  = morse_getblkldd_cm;
+    B.mat = Af77;
+    B.styp = MorseCM;
 
-    RUNTIME_desc_create( &dB );
-
-    for (m = 0; m < dA->mt; m++)
-    {
-        ldt = BLKLDD(dA, m);
-        for (n = 0; n < dA->nt; n++)
-        {
-            X1 = n == 0 ? dA->j%dA->nb : 0;
-            Y1 = m == 0 ? dA->i%dA->mb : 0;
-            X2 = n == dA->nt-1 ? (dA->j+dA->n-1)%dA->nb+1 : dA->nb;
-            Y2 = m == dA->mt-1 ? (dA->i+dA->m-1)%dA->mb+1 : dA->mb;
+    RUNTIME_desc_create( &B );
 
+    for (m = 0; m < A->mt; m++) {
+        tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
+        ldam = BLKLDD(A, m);
+        for (n = 0; n < A->nt; n++) {
+            tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
             MORSE_TASK_zlacpy(
                 &options,
                 MorseUpperLower,
-                (Y2-Y1), (X2-X1), dA->mb,
-                B(m, n), lda,
-                A(m, n), ldt);
+                tempmm, tempnn, A->mb,
+                B(m, n), ldaf77,
+                A(m, n), ldam);
         }
     }
 
     RUNTIME_sequence_wait( morse, sequence );
     RUNTIME_options_finalize( &options, morse );
     MORSE_TASK_dataflush_all();
-    RUNTIME_desc_getoncpu( &dB );
-    RUNTIME_desc_destroy( &dB );
+    RUNTIME_desc_getoncpu( &B );
+    RUNTIME_desc_destroy( &B );
 }
 
 /*******************************************************************************
  *  Conversion from LAPACK F77 matrix layout to tile layout - dynamic scheduling
  **/
-void morse_pztile_to_lapack(MORSE_desc_t *dA, MORSE_Complex64_t *Af77, int lda,
+void morse_pztile_to_lapack(MORSE_desc_t *A, MORSE_Complex64_t *Af77, int ldaf77,
                             MORSE_sequence_t *sequence, MORSE_request_t *request)
 {
     MORSE_context_t *morse;
     MORSE_option_t options;
-    MORSE_desc_t dB;
-    int X1, Y1;
-    int X2, Y2;
-    int n, m, ldt;
+    MORSE_desc_t B;
+    int m, n;
+    int ldam;
+    int tempmm, tempnn;
 
     morse = morse_context_self();
     if (sequence->status != MORSE_SUCCESS)
         return;
     RUNTIME_options_init(&options, morse, sequence, request);
 
-    dB = morse_desc_init(
-        MorseComplexDouble, dA->mb, dA->nb, dA->bsiz,
-        lda, dA->n, dA->i, dA->j, dA->m, dA->n, 1, 1);
-
-    dB.get_blkaddr = morse_getaddr_cm;
-    dB.get_blkldd  = morse_getblkldd_cm;
-    dB.mat  = Af77;
-    dB.styp = MorseCM;
+    B = morse_desc_init(
+        MorseComplexDouble, A->mb, A->nb, A->bsiz,
+        ldaf77, A->n, 0, 0, A->m, A->n, 1, 1);
 
-    RUNTIME_desc_create( &dB );
+    B.get_blkaddr = morse_getaddr_cm;
+    B.get_blkldd  = morse_getblkldd_cm;
+    B.mat  = Af77;
+    B.styp = MorseCM;
 
-    for (m = 0; m < dA->mt; m++)
-    {
-        Y1 = m == 0 ? dA->i%dA->mb : 0;
-        Y2 = m == dA->mt-1 ? (dA->i+dA->m-1)%dA->mb+1 : dA->mb;
-        ldt = BLKLDD(dA, m);
-
-        for (n = 0; n < dA->nt; n++)
-        {
-            X1 = n == 0 ? dA->j%dA->nb : 0;
-            X2 = n == dA->nt-1 ? (dA->j+dA->n-1)%dA->nb+1 : dA->nb;
+    RUNTIME_desc_create( &B );
 
+    for (m = 0; m < A->mt; m++) {
+        tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
+        ldam = BLKLDD(A, m);
+        for (n = 0; n < A->nt; n++) {
+            tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
             MORSE_TASK_zlacpy(
                 &options,
                 MorseUpperLower,
-                (Y2-Y1), (X2-X1), dA->mb,
-                A(m, n), ldt,
-                B(m, n), lda);
+                tempmm, tempnn, A->mb,
+                A(m, n), ldam,
+                B(m, n), ldaf77);
         }
     }
 
     RUNTIME_sequence_wait( morse, sequence );
     RUNTIME_options_finalize( &options, morse );
     MORSE_TASK_dataflush_all();
-    RUNTIME_desc_getoncpu( &dB );
-    RUNTIME_desc_destroy( &dB );
+    RUNTIME_desc_getoncpu( &B );
+    RUNTIME_desc_destroy( &B );
 }
 
 
 /*******************************************************************************
  *  Zeroes a submatrix in tile layout - dynamic scheduling
  **/
-void morse_pztile_zero(MORSE_desc_t *dA, MORSE_sequence_t *sequence, MORSE_request_t *request)
+void morse_pztile_zero(MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request)
 {
     MORSE_context_t *morse;
     MORSE_option_t options;
-    int X1, Y1;
-    int X2, Y2;
-    int n, m, ldt;
+    int m, n;
+    int ldam;
+    int tempmm, tempnn;
 
     morse = morse_context_self();
     if (sequence->status != MORSE_SUCCESS)
         return;
     RUNTIME_options_init(&options, morse, sequence, request);
 
-    for (m = 0; m < dA->mt; m++)
-    {
-        Y1 = m == 0 ? dA->i%dA->mb : 0;
-        Y2 = m == dA->mt-1 ? (dA->i+dA->m-1)%dA->mb+1 : dA->mb;
-        ldt = BLKLDD(dA, m);
-        for (n = 0; n < dA->nt; n++)
-        {
-            X1 = n == 0 ? dA->j%dA->nb : 0;
-            X2 = n == dA->nt-1 ? (dA->j+dA->n-1)%dA->nb+1 : dA->nb;
-
+    for (m = 0; m < A->mt; m++) {
+        tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb;
+        ldam = BLKLDD(A, m);
+        for (n = 0; n < A->nt; n++) {
+            tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb;
             MORSE_TASK_ztile_zero(
                 &options,
-                X1, X2, Y1, Y2,
-                A(m, n), ldt);
+                0, tempnn, 0, tempmm,
+                A(m, n), ldam);
         }
     }