diff --git a/src/modules/files/file.c b/src/modules/files/file.c
index f0af7bace8b1ebfc528b833990fa8b009a486bd5..3b2fba9e14968bf36b46835da363571dd3680916 100644
--- a/src/modules/files/file.c
+++ b/src/modules/files/file.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: file.c,v 1.146 1999/04/13 22:23:20 hubbe Exp $");
+RCSID("$Id: file.c,v 1.147 1999/04/17 13:55:27 grubba Exp $");
 #include "fdlib.h"
 #include "interpret.h"
 #include "svalue.h"
@@ -876,7 +876,9 @@ static void file_write(INT32 args)
   struct pike_string *str;
 
   if(args<1 || ((sp[-args].type != T_STRING) && (sp[-args].type != T_ARRAY)))
-    error("Bad argument 1 to file->write().\n");
+    error("Bad argument 1 to file->write().\n"
+	  "Type is %s. Expected string or array(string)\n",
+	  type_name[sp[-args].type]);
 
   if(FD < 0)
     error("File not open for write.\n");
@@ -885,8 +887,14 @@ static void file_write(INT32 args)
     struct array *a = sp[-args].u.array;
     i = a->size;
     while(i--) {
-      if ((a->item[i].type != T_STRING) || (a->item[i].u.string->size_shift)) {
-	error("Bad argument 1 to file->write().\n");
+      if (a->item[i].type != T_STRING) {
+	error("Bad argument 1 to file->write().\n"
+	      "Element %d is not a string.\n",
+	      i);
+      } else if (a->item[i].u.string->size_shift) {
+	error("Bad argument 1 to file->write().\n"
+	      "Element %d is a wide string.\n",
+	      i);
       }
     }