diff --git a/src/operators.c b/src/operators.c
index e5588ae36c94f01b6fb11ba9a8c019ea566f28f4..8d5e7ce0758c9016a19ca2702da46b2f195192f4 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.106 2000/09/26 03:17:04 hedda Exp $");
+RCSID("$Id: operators.c,v 1.107 2000/09/26 10:04:33 hedda Exp $");
 #include "interpret.h"
 #include "svalue.h"
 #include "multiset.h"
@@ -1897,7 +1897,7 @@ PMOD_EXPORT void o_divide(void)
 	  
 	  for(last=sp[-2].u.string->len,e=0;e<size-1;e++)
 	  {
-	    pos=sp[-2].u.string->len - (ptrdiff_t)((e+1)*len);
+	    pos=sp[-2].u.string->len - (ptrdiff_t)((e+1)*len+0.5);
 	    a->item[size-1-e].u.string=string_slice(sp[-2].u.string,
 						    pos,
 						    last-pos);
@@ -1915,7 +1915,7 @@ PMOD_EXPORT void o_divide(void)
 	  
 	  for(last=0,e=0;e<size-1;e++)
 	  {
-	    pos = DO_NOT_WARN((ptrdiff_t)((e+1)*len));
+	    pos = DO_NOT_WARN((ptrdiff_t)((e+1)*len+0.5));
 	    a->item[e].u.string=string_slice(sp[-2].u.string,
 					     last,
 					     pos-last);
@@ -1986,7 +1986,7 @@ PMOD_EXPORT void o_divide(void)
 	  
 	  for(last=sp[-2].u.array->size,e=0;e<size-1;e++)
 	  {
-	    pos=sp[-2].u.array->size - (ptrdiff_t)((e+1)*len);
+	    pos=sp[-2].u.array->size - (ptrdiff_t)((e+1)*len+0.5);
 	    a->item[size-1-e].u.array=friendly_slice_array(sp[-2].u.array,
 						    pos,
 						    last);
@@ -2003,7 +2003,7 @@ PMOD_EXPORT void o_divide(void)
 	  
 	  for(last=0,e=0;e<size-1;e++)
 	  {
-	    pos = (ptrdiff_t)((e+1)*len);
+	    pos = (ptrdiff_t)((e+1)*len+0.5);
 	    a->item[e].u.array=friendly_slice_array(sp[-2].u.array,
 						    last,
 						    pos);