diff --git a/lib/ftp.c b/lib/ftp.c
index c7246446c7f48e40a55824ef9b38aa137fc74dc6..710bee925d65e3a6634c6725693893400c5c1f09 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -1854,9 +1854,19 @@ CURLcode Curl_ftp_nextconnect(struct connectdata *conn)
 
       int size=-1; /* default unknown size */
 
+
+      /*
+       * It appears that there are FTP-servers that return size 0 for files
+       * when SIZE is used on the file while being in BINARY mode. To work
+       * around that (stupid) behavior, we attempt to parse the RETR response
+       * even if the SIZE returned size zero.
+       *
+       * Debugging help from Salvatore Sorrentino on February 26, 2003.
+       */
+
       if(!dirlist &&
          !data->set.ftp_ascii &&
-         (-1 == downloadsize)) {
+         (downloadsize < 1)) {
         /*
          * It seems directory listings either don't show the size or very
          * often uses size 0 anyway. ASCII transfers may very well turn out