--- a/ifcico/hydra.c
+++ b/ifcico/hydra.c
@@ -531,8 +531,8 @@ int hydra_batch(int role, file_list *to_
   char *inbuf, *outbuf;
   int rxlen, txlen;		/* length of receive/transmit buffer */
   long txwindow, rxwindow;	/* window sizes */
-  long txpos, rxpos;		/* file positions */
-  long stxpos, srxpos;
+  off_t txpos, rxpos;		/* file positions */
+  off_t stxpos, srxpos;
   long longnum;
   int hdxlink = 0;
   int txretries, rxretries;
@@ -865,7 +865,7 @@ int hydra_batch(int role, file_list *to_
 	  break;
 	}
 
-	loginf("Hydra send \"%s\" as \"%s\" (%lu bytes) dated %s",
+	loginf("Hydra send \"%s\" as \"%s\" (%llu bytes) dated %s",
 	       S(to_send->local), S(to_send->remote),
 	       (unsigned long) txstat.st_size, date(txstat.st_mtime));
 	(void) time(&txstarttime);
@@ -894,7 +894,7 @@ int hydra_batch(int role, file_list *to_
       {
 	if (to_send)
 	{
-	  txlen = sprintf(txbuf, "%08lx%08lx%08lx%08lx%08lx",
+	  txlen = sprintf(txbuf, "%08lx%08llx%08lx%08lx%08lx",
 			  mtime2sl(txstat.st_mtime),
 			  txstat.st_size,
 			  0UL,
@@ -1355,11 +1355,11 @@ int hydra_batch(int role, file_list *to_
 	else if ((rxlen > 41) && (rxbuf[rxlen - 1] == 0))
 	{
 	  time_t timestamp;
-	  long filesize;
+	  off_t filesize;
 	  char dosname[8 + 1 + 3 + 1], *name;
 
 
-	  sscanf(rxbuf, "%08lx%08lx%*08x%*08x%*08x",
+	  sscanf(rxbuf, "%08lx%08llx%*08x%*08x%*08x",
 		 &timestamp, &filesize);
 
 	  /* convert timestamp to UNIX time */
@@ -1400,7 +1400,7 @@ int hydra_batch(int role, file_list *to_
 	    name = dosname;
 	  }
 
-	  loginf("Hydra receive: \"%s\" (%ld bytes) dated %s",
+	  loginf("Hydra receive: \"%s\" (%lld bytes) dated %s",
 		 name, filesize, date(timestamp));
 
 	  rxfp = openfile(name, timestamp, filesize, &rxpos, resync);
--- a/ifcico/tcpproto.c
+++ b/ifcico/tcpproto.c
@@ -31,7 +31,8 @@ static FILE *in;
 static char txbuf[2048];
 static char rxbuf[2048];
 static int rx_type;
-static long startime,endtime,rxbytes,sbytes;
+static time_t startime,endtime;
+static off_t rxbytes,sbytes;
 
 static int sendfile(char *,char *);
 static int finsend(void);
@@ -244,7 +245,7 @@ int success;
 	sbytes=rxbytes-sbytes;
 	(void)time(&endtime);
 	if ((startime=endtime-startime) == 0L) startime=1L;
-	loginf("%s %lu bytes in %ld seconds (%ld cps)",
+	loginf("%s %llu bytes in %ld seconds (%ld cps)",
 		success?"received":"dropped after",
 		sbytes,startime,sbytes/startime);
 	return rc;
--- a/ifcico/zmrecv.c
+++ b/ifcico/zmrecv.c
@@ -24,7 +24,7 @@
 static FILE *fout=NULL;
 
 static int Usevhdrs;
-static long rxbytes;
+static off_t rxbytes;
 static int Eofseen;		/* indicates cpm eof (^Z) has been received */
 static int errors;
 static time_t startime,etime;
--- a/ifcico/zmsend.c
+++ b/ifcico/zmsend.c
@@ -47,7 +47,7 @@ static int Lskipnocor=0;
 static int Lzconv=0;
 static int Beenhereb4;
 static char Myattn[]={0};
-static long startime,endtime;
+static time_t startime,endtime;
 static long skipsize;
 #if 1
 static char *qbf=
