diff --git a/isisd/ChangeLog b/isisd/ChangeLog
index 4fed28f..67ef913 100644
--- a/isisd/ChangeLog
+++ b/isisd/ChangeLog
@@ -1,11 +1,19 @@
 2005-09-01 Hasso Tepper <hasso at quagga.net>
 
+	* random.c, spgrid.[ch]: Fix warnings with hope that I didn't broke
+	  anything. These floats to longs and vice versa casts are starnge
+	  indeed.
+	* isis_pdu.c: As we don't use %z for size_t for now because we support
+	  older compilers, cast them to unsigned long.
+
+2005-09-01 Hasso Tepper <hasso at quagga.net>
+
 	* isis_adjacency.c, isis_lsp.c, isisd.c: Replace XMALLOC && memset
 	  with XCALLOC.
 	* isis_lsp.c (lsp_build_pseudo): Fix adding ES neighbour.
 	* isis_tlv.c: More compact free_tlvs() function.
 	* isis_lsp.c (lsp_build_nonpseudo) : Try to fix one more regression
-	  introduced by stream cleanup. Seek enp to the right place before
+	  introduced by stream cleanup. Seek endp to the right place before
 	  starting to fill stream with TLVs.
 
 2005-08-16 Hasso Tepper <hasso at quagga.net>
diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c
index b83c633..e6a1e03 100644
--- a/isisd/isis_pdu.c
+++ b/isisd/isis_pdu.c
@@ -905,7 +905,9 @@
 		  circuit->area->area_tag,
 		  level, snpa_print (ssnpa), circuit->interface->name,
 		  circuit_t2string (circuit->circuit_is_type),
-		  circuit->circuit_id, stream_get_endp (circuit->rcv_stream));
+		  circuit->circuit_id,
+		  /* FIXME: use %z when we stop supporting old compilers. */
+		  (unsigned long) stream_get_endp (circuit->rcv_stream));
     }
 
   free_tlvs (&tlvs);
@@ -949,7 +951,8 @@
 		  ntohl (hdr->seq_num),
 		  ntohs (hdr->checksum),
 		  ntohs (hdr->rem_lifetime),
-		  stream_get_endp (circuit->rcv_stream), 
+		  /* FIXME: use %z when we stop supporting old compilers. */
+		  (unsigned long) stream_get_endp (circuit->rcv_stream), 
 		  circuit->interface->name);
     }
 
@@ -2031,13 +2034,15 @@
 	{
 	  zlog_debug ("ISIS-Adj (%s): Sent L%d LAN IIH on %s, length %ld",
 		      circuit->area->area_tag, level, circuit->interface->name,
-		      STREAM_SIZE (circuit->snd_stream));
+		      /* FIXME: use %z when we stop supporting old compilers. */
+		      (unsigned long) STREAM_SIZE (circuit->snd_stream));
 	}
       else
 	{
 	  zlog_debug ("ISIS-Adj (%s): Sent P2P IIH on %s, length %ld",
 		      circuit->area->area_tag, circuit->interface->name,
-		      STREAM_SIZE (circuit->snd_stream));
+		      /* FIXME: use %z when we stop supporting old compilers. */
+		      (unsigned long) STREAM_SIZE (circuit->snd_stream));
 	}
     }
 
@@ -2205,7 +2210,8 @@
 	{
 	  zlog_debug ("ISIS-Snp (%s): Sent L%d CSNP on %s, length %ld",
 		     circuit->area->area_tag, level, circuit->interface->name,
-		     STREAM_SIZE (circuit->snd_stream));
+		     /* FIXME: use %z when we stop supporting old compilers. */
+		     (unsigned long) STREAM_SIZE (circuit->snd_stream));
 	  for (ALL_LIST_ELEMENTS (list, node, nnode, lsp))
 	  {
 	    zlog_debug ("ISIS-Snp (%s):         CSNP entry %s, seq 0x%08x,"
@@ -2372,7 +2378,9 @@
 		zlog_debug ("ISIS-Snp (%s): Sent L%d PSNP on %s, length %ld",
 			    circuit->area->area_tag, level,
 			    circuit->interface->name,
-			    STREAM_SIZE (circuit->snd_stream));
+			    /* FIXME: use %z when we stop supporting old
+			     * compilers. */
+			    (unsigned long) STREAM_SIZE (circuit->snd_stream));
 
 	      retval = build_psnp (level, circuit, list);
 	      if (retval == ISIS_OK)
diff --git a/isisd/topology/random.c b/isisd/topology/random.c
index d4ef995..6ee17a0 100644
--- a/isisd/topology/random.c
+++ b/isisd/topology/random.c
@@ -10,11 +10,11 @@
 #include <sys/types.h>
 #include <sys/times.h>
 
-float timer()
+unsigned long timer()
    { struct tms hold;
 
         times(&hold);
-        return  (float)(hold.tms_utime) / 60.0;
+        return (unsigned long) ((float) (hold.tms_utime) / 60.0);
    }
 
 
@@ -84,6 +84,7 @@
   return (long) internal_seed ;
 }
 
+#if 0 /* Not used. */
 /*********************************************************************/
 /*                                                                   */
 /*              computer independent variant of  irand               */
@@ -106,14 +107,14 @@
   internal_seed = ( (((is2 * A1) + (is1 * A2))% T16 )* T15 + (is2 * A2) ) & B;
   return (long) ( internal_seed ) ;
 }
-
+#endif
 
 /*********************************************************************/
 
 
 double rand01()
 
-{ return  (double) irand() / BF ;
+{ return  (double) (irand() / BF) ;
 }
   
 /*********************************************************************/
diff --git a/isisd/topology/spgrid.c b/isisd/topology/spgrid.c
index bde0f95..a1aa6d7 100644
--- a/isisd/topology/spgrid.c
+++ b/isisd/topology/spgrid.c
@@ -26,7 +26,7 @@
 
 #define NODE( x, y ) (x*Y + y + 1)
 
-char   *graph_type[] =  {
+const char   *graph_type[] =  {
   "double cycle",
   "cycle",
   "path"
@@ -227,7 +227,7 @@
 /* parsing  parameters */
 /* checks the validity of incoming parameters */
 int
-spgrid_check_params ( struct vty *vty, int argc, char **argv)
+spgrid_check_params ( struct vty *vty, int argc, const char **argv)
 {
 /* initialized by default values */
   ext=0;
@@ -341,11 +341,11 @@
         switch ( args[2] ) {
           case 'l': /* upper bound of the interval */
             cl_f = 1;
-            cl  =  (long) atof ( &args[3] );
+            cl  =  atol ( &args[3] );
             break;
           case 'm': /* lower bound */
             cm_f = 1;
-            cm  = (long ) atof ( &args[3] );
+            cm  = atol ( &args[3] );
             break;
           case 'c': /* type - cycle */
             cw_f = 1;
@@ -372,15 +372,15 @@
           {
           case 'l': /* upper bound of the interval */
             al_f = 1;
-            al  =  (long) atof ( &args[3] );
+            al  =  atol ( &args[3] );
             break;
           case 'm': /* lower bound */
             am_f = 1;
-            am  = (long ) atof ( &args[3] );
+            am  = atol ( &args[3] );
             break;
           case 'x': /* number of additional arcs */
             ax_f = 1;
-            ax   = (long ) atof ( &args[3] );
+            ax   = atol ( &args[3] );
             if ( ax < 0 )
              {
                usage (vty);
@@ -404,11 +404,11 @@
           {
           case 'l': /* upper bound */
             il_f = 1;
-            il  =  (long) atof ( &args[3] );
+            il  =  atol ( &args[3] );
             break;
           case 'm': /* lower bound */
             im_f = 1;
-            im  = (long ) atof ( &args[3] );
+            im  = atol ( &args[3] );
             break;
           case 'n': /* additional length: l *= in*|i1-i2| */
             in_f = 1;
@@ -452,11 +452,11 @@
           {
           case 'l': /* upper bound of art. arc */
             sl_f = 1;
-            sl  =  (long) atof ( &args[3] );
+            sl  =  atol ( &args[3] );
             break;
           case 'm': /* lower bound of art. arc */
             sm_f = 1;
-            sm  =  (long) atof ( &args[3] );
+            sm  =  atol ( &args[3] );
             break;
           default:  /* unknown switch  value */
             usage (vty);
@@ -473,11 +473,11 @@
           {
           case 'l': /* upper bound */
             pl_f = 1;
-            pl  =  (long) atof ( &args[3] );
+            pl  =  atol ( &args[3] );
             break;
           case 'm': /* lower bound */
             pm_f = 1;
-            pm  = (long ) atof ( &args[3] );
+            pm  = atol ( &args[3] );
             break;
           case 'n': /* additional: p *= pn*(x+1) */
             pn_f = 1;
diff --git a/isisd/topology/spgrid.h b/isisd/topology/spgrid.h
index f96c00f..1c1ceea 100644
--- a/isisd/topology/spgrid.h
+++ b/isisd/topology/spgrid.h
@@ -33,7 +33,7 @@
 };
 
 int           gen_spgrid_topology (struct vty *vty, struct list *topology);
-int           spgrid_check_params (struct vty *vty, int argc, char **argv);
+int           spgrid_check_params (struct vty *vty, int argc, const char **argv);
 
 
 #endif /* _ZEBRA_ISIS_TOPOLOGY_SPGRID_H */
