diff --git a/src/modules/Gz/module.pmod.in b/src/modules/Gz/module.pmod.in
index 05d75a335077a8e49b03a1d831407291b10681d3..cf7519d81f21ba247f7420487b21416a0bdafa56 100644
--- a/src/modules/Gz/module.pmod.in
+++ b/src/modules/Gz/module.pmod.in
@@ -1,4 +1,4 @@
-// $Id: module.pmod.in,v 1.10 2003/04/15 13:39:31 marcus Exp $
+// $Id: module.pmod.in,v 1.11 2003/04/15 13:42:34 marcus Exp $
 #pike __REAL_VERSION__
 
 inherit @module@;
@@ -201,11 +201,14 @@ class _file {
 	pos += file_pos;
       if(pos < 0)
 	return -1;
-      if(!f->seek || f->seek(0)<0)
-	return -1;
-      file_pos = 0;
-      read_buf = "";
-      crc = crc32("");
+      if(pos < file_pos) {
+	if(!f->seek || f->seek(0)<0)
+	  return -1;
+	file_pos = 0;
+	read_buf = "";
+	crc = crc32("");
+      } else
+	pos -= file_pos;
       while(pos > 0) {
 	string r = read(pos>16384? 16384:pos);
 	if(!sizeof(r))