diff --git a/src/array.c b/src/array.c
index 75695d7203dd650f4a0530fdecddc77fe1546f33..c895a214f06d3be0f4365e2bb5dcd31d1f6fc6a1 100644
--- a/src/array.c
+++ b/src/array.c
@@ -19,7 +19,7 @@
 #include "gc.h"
 #include "main.h"
 
-RCSID("$Id: array.c,v 1.35 1998/04/27 22:33:17 hubbe Exp $");
+RCSID("$Id: array.c,v 1.36 1998/04/28 23:54:21 grubba Exp $");
 
 struct array empty_array=
 {
@@ -161,7 +161,13 @@ void simple_array_index_no_free(struct svalue *s,
     case T_INT:
       i=ind->u.integer;
       if(i<0) i+=a->size;
-      if(i<0 || i>=a->size) error("Index out of range.\n");
+      if(i<0 || i>=a->size) {
+	if (a->size) {
+	  error("Index %d is out of range 0 - %d.\n", i, a->size-1);
+	} else {
+	  error("Attempt to index the empty array with %d.\n", i);
+	}
+      }
       array_index_no_free(s,a,i);
       break;
 
@@ -218,7 +224,13 @@ void simple_set_index(struct array *a,struct svalue *ind,struct svalue *s)
     error("Index is not an integer.\n");
   i=ind->u.integer;
   if(i<0) i+=a->size;
-  if(i<0 || i>=a->size) error("Index out of range.\n");
+  if(i<0 || i>=a->size) {
+    if (a->size) {
+      error("Index %d is out of range 0 - %d.\n", i, a->size-1);
+    } else {
+      error("Attempt to index the empty array with %d.\n", i);
+    }
+  }
   array_set_index(a,i,s);
 }
 
@@ -887,7 +899,13 @@ union anything *array_get_item_ptr(struct array *a,
     error("Index is not an integer.\n");
   i=ind->u.integer;
   if(i<0) i+=a->size;
-  if(i<0 || i>=a->size) error("Index out of range.\n");
+  if(i<0 || i>=a->size) {
+    if (a->size) {
+      error("Index %d is out of range 0 - %d.\n", i, a->size-1);
+    } else {
+      error("Attempt to index the empty array with %d.\n", i);
+    }
+  }
   return low_array_get_item_ptr(a,i,t);
 }