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 */
