diff --git a/src/array.c b/src/array.c
index 8a19921c9d3248a03a82554ced997739e156aeb6..cb6d69c6cd62523442df23388d93a2e18f05c823 100644
--- a/src/array.c
+++ b/src/array.c
@@ -23,7 +23,7 @@
 #include "stuff.h"
 #include "bignum.h"
 
-RCSID("$Id: array.c,v 1.81 2000/08/15 11:09:06 grubba Exp $");
+RCSID("$Id: array.c,v 1.82 2000/08/15 11:17:07 grubba Exp $");
 
 PMOD_EXPORT struct array empty_array=
 {
@@ -487,7 +487,8 @@ PMOD_EXPORT ptrdiff_t array_search(struct array *v, struct svalue *s,
  * Slice a pice of an array (nondestructively)
  * return an array consisting of v[start..end-1]
  */
-PMOD_EXPORT struct array *slice_array(struct array *v,INT32 start,INT32 end)
+PMOD_EXPORT struct array *slice_array(struct array *v, ptrdiff_t start,
+				      ptrdiff_t end)
 {
   struct array *a;
 
@@ -516,7 +517,9 @@ PMOD_EXPORT struct array *slice_array(struct array *v,INT32 start,INT32 end)
  * Slice a pice of an array (nondestructively)
  * return an array consisting of v[start..end-1]
  */
-PMOD_EXPORT struct array *friendly_slice_array(struct array *v,INT32 start,INT32 end)
+PMOD_EXPORT struct array *friendly_slice_array(struct array *v,
+					       ptrdiff_t start,
+					       ptrdiff_t end)
 {
   struct array *a;
 
diff --git a/src/array.h b/src/array.h
index a8e6f463a29ffbdea5c3a13de21ddfaf9abdf700..8705db17692662189b212ba1a692b4ebb00b7886 100644
--- a/src/array.h
+++ b/src/array.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: array.h,v 1.26 2000/08/15 11:09:37 grubba Exp $
+ * $Id: array.h,v 1.27 2000/08/15 11:17:20 grubba Exp $
  */
 #ifndef ARRAY_H
 #define ARRAY_H
@@ -105,8 +105,11 @@ PMOD_EXPORT struct array *array_shrink(struct array *v,INT32 size);
 PMOD_EXPORT struct array *array_remove(struct array *v,INT32 index);
 PMOD_EXPORT ptrdiff_t array_search(struct array *v, struct svalue *s,
 				   ptrdiff_t start);
-PMOD_EXPORT struct array *slice_array(struct array *v,INT32 start,INT32 end);
-PMOD_EXPORT struct array *friendly_slice_array(struct array *v,INT32 start,INT32 end);
+PMOD_EXPORT struct array *slice_array(struct array *v, ptrdiff_t start,
+				      ptrdiff_t end);
+PMOD_EXPORT struct array *friendly_slice_array(struct array *v,
+					       ptrdiff_t start,
+					       ptrdiff_t end);
 PMOD_EXPORT struct array *copy_array(struct array *v);
 PMOD_EXPORT void check_array_for_destruct(struct array *v);
 PMOD_EXPORT INT32 array_find_destructed_object(struct array *v);
diff --git a/src/operators.c b/src/operators.c
index 1b4ac26526c9223b1a8a5154ff648d2e9b3015b2..19884bc352dfe870493ce00cb1699cb382202937 100644
--- a/src/operators.c
+++ b/src/operators.c
@@ -6,7 +6,7 @@
 /**/
 #include "global.h"
 #include <math.h>
-RCSID("$Id: operators.c,v 1.98 2000/08/10 17:44:56 grubba Exp $");
+RCSID("$Id: operators.c,v 1.99 2000/08/15 11:18:46 grubba Exp $");
 #include "interpret.h"
 #include "svalue.h"
 #include "multiset.h"
@@ -1797,7 +1797,7 @@ PMOD_EXPORT void o_divide(void)
 	  
 	  for(last=0,e=0;e<size-1;e++)
 	  {
-	    pos=(INT32)((e+1)*len);
+	    pos = DO_NOT_WARN((ptrdiff_t)((e+1)*len));
 	    a->item[e].u.string=string_slice(sp[-2].u.string,
 					     last,
 					     pos-last);