diff -dru curl-7.9.8/lib/file.c curl-7.9.8a/lib/file.c
--- curl-7.9.8/lib/file.c	2002-06-11 15:13:01.000000000 +0400
+++ curl-7.9.8a/lib/file.c	2002-09-19 10:43:36.910697000 +0400
@@ -159,6 +159,16 @@
     expected_size = (double)statbuf.st_size;
   }
 
+  /* Added by Dolbneff A.V & Spiridonoff A.V */
+  if (conn->resume_from <= expected_size)
+    expected_size -= conn->resume_from;
+  else
+    /* Is this error code suitable in such situation? */
+    return CURLE_FTP_BAD_DOWNLOAD_RESUME;
+
+  if (expected_size == 0)
+    return CURLE_OK;
+
   /* The following is a shortcut implementation of file reading
      this is both more efficient than the former call to download() and
      it avoids problems with select() and recv() on file descriptors
@@ -166,6 +176,9 @@
   if(expected_size != -1)
     Curl_pgrsSetDownloadSize(data, expected_size);
 
+  /* Added by Dolbneff A.V & Spiridonoff A.V */
+  lseek(fd, conn->resume_from, SEEK_SET);
+
   while (res == CURLE_OK) {
     nread = read(fd, buf, BUFSIZE-1);
 

