diff --git a/main/src/h2root.cxx b/main/src/h2root.cxx
index aab8cea3cc59fdb8a81c479ca8e752e3619ed792..feec224c4b0e7c5a9431b5dd49a25e8ca134646b 100644
--- a/main/src/h2root.cxx
+++ b/main/src/h2root.cxx
@@ -40,6 +40,7 @@
 // Also, the arrays must be declared extern like on Windows
 #ifndef WIN32
 #define PAWC_SIZE 4000000
+#  define bigbuf bigbuf_
 #  define pawc pawc_
 #  define quest quest_
 #  define hcbits hcbits_
@@ -70,7 +71,7 @@ extern "C" int hcbook[51];
 extern "C" int rzcl[11];
 #endif
 
-char bigbuf[4000000]; //this variable must be global for amd64
+extern "C" char bigbuf[4000000]; //this variable must be global for amd64
 int *iq, *lq;
 float *q;
 char idname[128];
@@ -676,10 +677,18 @@ void convert_cwn(Int_t id)
 #else
    hgiven(id,chtitl,80,nvar,chtag_out,kNchar,rmin[0],rmax[0]);
 #endif
+   //Long_t add0 = (Long_t)&bigbuf[0];
+   //Long_t addpaw = (Long_t)&pawc[18];
+   //printf("ALIGN add0 = %lld, mod=%d, addpaw=%lld, modpaw=%d\n",add0,add0%4,addpaw,addpaw%4);
+   Long_t add = (Long_t)&bigbuf[0] - (Long_t)&pawc[18];
+   add /= 4;
+   Int_t addq = Int_t(add);
 #ifndef WIN32
-   hbnam(id,PASSCHAR(" "),bigbuf[0],PASSCHAR("$CLEAR"),0,1,6);
+   //hbnam(id,PASSCHAR(" "),bigbuf[0],PASSCHAR("$CLEAR"),0,1,6);
+   hbnam(id,PASSCHAR(" "),addq,PASSCHAR("$CLEAR"),0,1,6);
 #else
-   hbnam(id,PASSCHAR(" "),bigbuf[0],PASSCHAR("$CLEAR"),0);
+   //hbnam(id,PASSCHAR(" "),bigbuf[0],PASSCHAR("$CLEAR"),0);
+   hbnam(id,PASSCHAR(" "),addq,PASSCHAR("$CLEAR"),0);
 #endif
 
    Int_t bufpos = 0;
@@ -785,11 +794,14 @@ void convert_cwn(Int_t id)
          strcpy(oldblock,block);
          oldischar = ischar;
          Int_t lblock   = strlen(block);
-         Long_t add= (Long_t)&bigbuf[bufpos];
+         //Long_t add= (Long_t)&bigbuf[bufpos];
+         add= (Long_t)&bigbuf[bufpos] - (Long_t)&pawc[18];
+	 add /= 4;
+	 addq = Int_t(add);
 #ifndef WIN32
-         hbnam(id,PASSCHAR(block),add,PASSCHAR("$SET"),ischar,lblock,4);
+         hbnam(id,PASSCHAR(block),addq,PASSCHAR("$SET"),ischar,lblock,4);
 #else
-         hbnam(id,PASSCHAR(block),add,PASSCHAR("$SET"),ischar);
+         hbnam(id,PASSCHAR(block),addq,PASSCHAR("$SET"),ischar);
 #endif
 
       }
diff --git a/misc/minicern/src/hbook.f b/misc/minicern/src/hbook.f
index 26105b2e158a90d93f0d8b7f0846ca102bbf4feb..ac41865e6dfc2439b33d8b2acc74e3e5695f92da 100644
--- a/misc/minicern/src/hbook.f
+++ b/misc/minicern/src/hbook.f
@@ -5,7 +5,7 @@
 * are missing.
 *
 *-------------------------------------------------------------------------------
-
+      
       SUBROUTINE HNTVAR2(ID1,IVAR,CHTAG,CHFULL,BLOCK,NSUB,ITYPE,ISIZE
      +                  ,NBITS,IELEM)
       INTEGER   ZBITS,  ZNDIM,  ZNOENT, ZNPRIM, ZNRZB,  ZIFCON,
@@ -25,6 +25,8 @@
      +       NCHAR ,NRHIST,IERR  ,NV
       INTEGER     NWPAW,IXPAWC,IHDIV,IXHIGZ,IXKU,        LMAIN
       REAL                                       FENC   ,      HCV
+      common/bigbuf/bigb(4000000)
+      character bigb
       COMMON/PAWC/NWPAW,IXPAWC,IHDIV,IXHIGZ,IXKU,FENC(5),LMAIN,
      +HCV(4000000-11)
       INTEGER   IQ        ,LQ
@@ -2555,10 +2557,11 @@
             ENDIF
             IELEM = IELEM*IE
    10    CONTINUE
-         IADDW = ISHFT(IADD, -2)
-         IBYOF = IAND(IADD, IBYPW-1)
-         IF (IBYOF .NE. 0) GOTO 40
-         IQ(LNAME+IOFF+ZNADDR) = IADDW - LOCF(IQ(1))
+*         IADDW = ISHFT(IADD, -2)
+*         IBYOF = IAND(IADD, IBYPW-1)
+*         IF (IBYOF .NE. 0) GOTO 40
+*         IQ(LNAME+IOFF+ZNADDR) = IADDW - LOCF(IQ(1))
+         IQ(LNAME+IOFF+ZNADDR) = IADD
          IADD = IADD + IELEM*ISIZE
    20    IOFF = IOFF + ZNADDR
    30 CONTINUE