diff --git a/src/interpret.h b/src/interpret.h
index 1650e6548e749fdec01bf0642ffe2dfd8c0df074..bc46b3061b73e41cf5073e235eaca958c31e7a27 100644
--- a/src/interpret.h
+++ b/src/interpret.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: interpret.h,v 1.55 2000/08/03 12:36:30 grubba Exp $
+ * $Id: interpret.h,v 1.56 2000/08/03 12:46:29 grubba Exp $
  */
 #ifndef INTERPRET_H
 #define INTERPRET_H
@@ -94,10 +94,16 @@ struct pike_frame
 
 #define pop_stack() do{ free_svalue(--Pike_sp); debug_check_stack(); }while(0)
 
+#ifdef __ECL
+#define MAYBE_CAST_TO_LONG(X)	(X)
+#else /* !__ECL */
+#define MAYBE_CAST_TO_LONG(X)	((long)(X))
+#endif /* __ECL */
+
 #define pop_n_elems(X)							\
  do { ptrdiff_t x_=(X); if(x_) { 					\
    check__positive(x_, ("Popping negative number of args.... (%ld) \n",	\
-		   (long)x_));						\
+		   MAYBE_CAST_TO_LONG(x_)));				\
    Pike_sp -= x_; debug_check_stack();					\
    free_svalues(Pike_sp, x_, BIT_MIXED);				\
  } } while (0)