diff --git a/base/src/TKey.cxx b/base/src/TKey.cxx
index 7d409f0be472cf297fbb0bee5984ee6b9725b441..bdd4663a413b6dd527f90164245df0f66743b094 100644
--- a/base/src/TKey.cxx
+++ b/base/src/TKey.cxx
@@ -1,4 +1,4 @@
-// @(#)root/base:$Name:  $:$Id: TKey.cxx,v 1.19 2002/02/02 11:54:34 brun Exp $
+// @(#)root/base:$Name:  $:$Id: TKey.cxx,v 1.20 2002/04/04 08:58:49 brun Exp $
 // Author: Rene Brun   28/12/94
 
 /*************************************************************************
@@ -61,6 +61,8 @@ const Int_t kMAXBUF = 0xffffff;
 const Int_t kMAXFILEBUFFER = 262144;
 #endif
 
+UInt_t keyAbsNumber = 0;
+
 ClassImp(TKey)
 
 //______________________________________________________________________________
@@ -76,6 +78,7 @@ TKey::TKey() : TNamed(), fDatime((UInt_t)0)
    fBufferRef  = 0;
    fCycle      = 0;
    fSeekPdir   = 0;
+   keyAbsNumber++; SetUniqueID(keyAbsNumber);
 }
 
 //______________________________________________________________________________
@@ -94,6 +97,7 @@ TKey::TKey(Seek_t pointer, Int_t nbytes) : TNamed()
    fBufferRef  = 0;
    fCycle      = 0;
    fSeekPdir   = 0;
+   keyAbsNumber++; SetUniqueID(keyAbsNumber);
 }
 
 //______________________________________________________________________________
@@ -227,6 +231,7 @@ void TKey::Create(Int_t nbytes)
 
 //*-*-------------------find free segment
 //*-*                    =================
+   keyAbsNumber++; SetUniqueID(keyAbsNumber);
    Int_t nsize      = nbytes + fKeylen;
    TList *lfree = gFile->GetListOfFree();
    TFree *f1        = (TFree*)lfree->First();
@@ -351,8 +356,8 @@ void TKey::FillBuffer(char *&buffer)
 //______________________________________________________________________________
 ULong_t TKey::Hash() const
 {
-// This Hash function redefines the default from TNamed
-   return TObject::Hash();
+// This Hash function should redefine the default from TNamed
+   return TNamed::Hash();
 }
 
 //______________________________________________________________________________
diff --git a/io/src/TKey.cxx b/io/src/TKey.cxx
index 7d409f0be472cf297fbb0bee5984ee6b9725b441..bdd4663a413b6dd527f90164245df0f66743b094 100644
--- a/io/src/TKey.cxx
+++ b/io/src/TKey.cxx
@@ -1,4 +1,4 @@
-// @(#)root/base:$Name:  $:$Id: TKey.cxx,v 1.19 2002/02/02 11:54:34 brun Exp $
+// @(#)root/base:$Name:  $:$Id: TKey.cxx,v 1.20 2002/04/04 08:58:49 brun Exp $
 // Author: Rene Brun   28/12/94
 
 /*************************************************************************
@@ -61,6 +61,8 @@ const Int_t kMAXBUF = 0xffffff;
 const Int_t kMAXFILEBUFFER = 262144;
 #endif
 
+UInt_t keyAbsNumber = 0;
+
 ClassImp(TKey)
 
 //______________________________________________________________________________
@@ -76,6 +78,7 @@ TKey::TKey() : TNamed(), fDatime((UInt_t)0)
    fBufferRef  = 0;
    fCycle      = 0;
    fSeekPdir   = 0;
+   keyAbsNumber++; SetUniqueID(keyAbsNumber);
 }
 
 //______________________________________________________________________________
@@ -94,6 +97,7 @@ TKey::TKey(Seek_t pointer, Int_t nbytes) : TNamed()
    fBufferRef  = 0;
    fCycle      = 0;
    fSeekPdir   = 0;
+   keyAbsNumber++; SetUniqueID(keyAbsNumber);
 }
 
 //______________________________________________________________________________
@@ -227,6 +231,7 @@ void TKey::Create(Int_t nbytes)
 
 //*-*-------------------find free segment
 //*-*                    =================
+   keyAbsNumber++; SetUniqueID(keyAbsNumber);
    Int_t nsize      = nbytes + fKeylen;
    TList *lfree = gFile->GetListOfFree();
    TFree *f1        = (TFree*)lfree->First();
@@ -351,8 +356,8 @@ void TKey::FillBuffer(char *&buffer)
 //______________________________________________________________________________
 ULong_t TKey::Hash() const
 {
-// This Hash function redefines the default from TNamed
-   return TObject::Hash();
+// This Hash function should redefine the default from TNamed
+   return TNamed::Hash();
 }
 
 //______________________________________________________________________________