diff --git a/hat.cabal b/hat.cabal
--- a/hat.cabal
+++ b/hat.cabal
@@ -1,6 +1,6 @@
 
 name:                hat
-version:             2.9.2
+version:             2.9.3
 synopsis:            The Haskell tracer, generating and viewing Haskell execution traces
 description:
   hat-trans transforms Module.hs into Hat/Module.hs such that when the program is
@@ -25,7 +25,7 @@
 
   Flag -v allows you to see what is going on. Building takes a long time 
   (one module has 25.000 lines of code). 
-  Don't worry about numerous warning messages. The tracing transformation does produce
+  Some compiler warnings have been turned off. The tracing transformation does produce
   code with lots of overlapping patterns.
 
   Use:
diff --git a/tools/artutils.h b/tools/artutils.h
--- a/tools/artutils.h
+++ b/tools/artutils.h
@@ -42,6 +42,7 @@
 void		finalise	(void);
 FILE*		openFile	(char* base, char* ext);
 int		sizeFile	(char* base, char* ext);
+void            myfread         (void* buf, int siz, int num, FILE* stream);
 int		freadAt		(FileOffset fo, void* ptr
 				,int size, int nmemb, FILE* stream);
 FileOffset	readFO		(void);
diff --git a/tools/detectutils.c b/tools/detectutils.c
--- a/tools/detectutils.c
+++ b/tools/detectutils.c
@@ -170,7 +170,7 @@
         if (hasSrcPos(c)) { readFO(); }		/* skip use position */
 	readFO(); readFO();			/* skip parent and result */
 	ptr[0] = readFO();			/* get fun */
-	fread(&c,sizeof(char),1,HatFileRandom);	/* get arity */
+	myfread(&c,sizeof(char),1,HatFileRandom);	/* get arity */
 	for (i=1; i<=c; i++) ptr[i] = readFO();	/* get args */
 	if (anySuspect(ptr[0])) return True;
 	for (i=1; i<=c; i++) {
diff --git a/tools/hat-names.c b/tools/hat-names.c
--- a/tools/hat-names.c
+++ b/tools/hat-names.c
@@ -487,7 +487,7 @@
           readFO();	/* parent */
           result = readFO();
           fun = readFO();
-          fread(&size,sizeof(unsigned char),1,HatFileRandom);   /* arity */
+          myfread(&size,sizeof(unsigned char),1,HatFileRandom);   /* arity */
           if (fun < caf) {      /* fun already seen in linear scan */
             atom = (defn*)FM_lookup(map2,(cast)(uintptr_t)fun);
             if (atom) {
@@ -558,11 +558,11 @@
         break;
     case AtomVariable:
         readFO();	/* skip module pointer */
-        { int x; fread(&x,sizeof(int),1,HatFileRandom);	} /* skip line/col */
-        { int x; fread(&x,sizeof(int),1,HatFileRandom);	} /* skip line/col */
-        { char x; fread(&x,sizeof(char),1,HatFileRandom); } /* skip fixity */
+        { int x; myfread(&x,sizeof(int),1,HatFileRandom);	} /* skip line/col */
+        { int x; myfread(&x,sizeof(int),1,HatFileRandom);	} /* skip line/col */
+        { char x; myfread(&x,sizeof(char),1,HatFileRandom); } /* skip fixity */
         { unsigned char size; char *id;
-          fread(&size,sizeof(unsigned char),1,HatFileRandom);
+          myfread(&size,sizeof(unsigned char),1,HatFileRandom);
           id = readString();
           HIDE(fprintf(stderr,"countCAF: found AtomVariable %s\n",id);)
           if (arity < size) {
diff --git a/tools/nontermutils.c b/tools/nontermutils.c
--- a/tools/nontermutils.c
+++ b/tools/nontermutils.c
@@ -195,7 +195,7 @@
         readFO();				/* skip result */
         ptr = readFO();				/* fun/constructor */
         if (n==0) return getResultRestricted(ptr);
-        fread(&c,sizeof(char),1,HatFileRandom);	/* get arity */
+        myfread(&c,sizeof(char),1,HatFileRandom);	/* get arity */
         if (n<=c) {
           for (i=1; i<n; i++) readFO();		/* skip other args */
           ptr = readFO();			/* get n'th arg */
@@ -208,7 +208,7 @@
         readFO();				/* skip parent */
         ptr = readFO();				/* fun/constructor */
         if (n==0) return ptr;	/* no result-chain - fun is already an atom */
-        fread(&c,sizeof(char),1,HatFileRandom);	/* get arity */
+        myfread(&c,sizeof(char),1,HatFileRandom);	/* get arity */
         if (n<=c) {
           for (i=1; i<n; i++) readFO();		/* skip other args */
           ptr = readFO();			/* get n'th arg */
@@ -244,7 +244,7 @@
         readFO();				/* skip result */
         ptr = readFO();				/* exp/constructor */
         if (n==0) return getResult(ptr,True);
-        fread(&c,sizeof(char),1,HatFileRandom);	/* get arity */
+        myfread(&c,sizeof(char),1,HatFileRandom);	/* get arity */
         if (n<=c) {
           for (i=0; i<c; i++) readFO();		/* skip binder labels */
           for (i=1; i<n; i++) readFO();		/* skip other bindees */
diff --git a/tools/observeutils.c b/tools/observeutils.c
--- a/tools/observeutils.c
+++ b/tools/observeutils.c
@@ -466,7 +466,7 @@
           readFO();
           result = readFO();
           fun = readFO();
-          fread(&size,sizeof(unsigned char),1,HatFileRandom);	/* arity */
+          myfread(&size,sizeof(unsigned char),1,HatFileRandom);	/* arity */
           if (fun < caf) {	/* fun already seen in linear scan */
             if (o_context) {
               atom = (Atom*)FM_lookup(mapContext2Atom,(cast)(uintptr_t)fun);
@@ -540,12 +540,12 @@
         break;
     case AtomVariable:
         readFO();	/* skip module pointer */
-        { int x; fread(&x,sizeof(int),1,HatFileRandom); }   /* skip line/col */
-        { int x; fread(&x,sizeof(int),1,HatFileRandom); }   /* skip line/col */
-        { char x; fread(&x,sizeof(char),1,HatFileRandom); } /* skip fixity */
+        { int x; myfread(&x,sizeof(int),1,HatFileRandom); }   /* skip line/col */
+        { int x; myfread(&x,sizeof(int),1,HatFileRandom); }   /* skip line/col */
+        { char x; myfread(&x,sizeof(char),1,HatFileRandom); } /* skip fixity */
         { unsigned char size;
           char *id;
-          fread(&size,sizeof(unsigned char),1,HatFileRandom);
+          myfread(&size,sizeof(unsigned char),1,HatFileRandom);
           id = readString();
           HIDE(fprintf(stderr,"searchCAF: found AtomVariable %s\n",id);)
           if (!strcmp(id,o_callee) && (arity<size)) {
diff --git a/trans/HatTrans.hs b/trans/HatTrans.hs
--- a/trans/HatTrans.hs
+++ b/trans/HatTrans.hs
@@ -1,8 +1,7 @@
-{- ---------------------------------------------------------------------------
-This `main' function calls all passes of Hat.
-It parses the .hs source file, creates the .hx file, and
-then stops immediately after writing a new transformed .hs file.
--} 
+-- This `main' function calls all passes of Hat.
+-- It parses the .hs source file, creates the .hx file, and
+-- then stops immediately after writing a new transformed .hs file.
+
 module Main where
 
 import System.IO(hPutStr,stderr)
