diff --git a/src/modules/system/system.c b/src/modules/system/system.c
index b8afeadc477ed535c19d8b2e06e38f464f67c56d..dfb64bd5c4e6f97f970296e6b1796f58d4ad6520 100644
--- a/src/modules/system/system.c
+++ b/src/modules/system/system.c
@@ -1,5 +1,5 @@
 /*
- * $Id: system.c,v 1.20 1997/08/05 17:03:14 grubba Exp $
+ * $Id: system.c,v 1.21 1997/08/10 00:47:52 grubba Exp $
  *
  * System-call module for Pike
  *
@@ -14,7 +14,7 @@
 #include "system.h"
 
 #include <global.h>
-RCSID("$Id: system.c,v 1.20 1997/08/05 17:03:14 grubba Exp $");
+RCSID("$Id: system.c,v 1.21 1997/08/10 00:47:52 grubba Exp $");
 #include <module_support.h>
 #include <las.h>
 #include <interpret.h>
@@ -289,9 +289,11 @@ void f_setgid(INT32 args)
 }
 
 #if defined(HAVE_SETEUID) || defined(HAVE_SETRESUID)
+/* int seteuid(int euid) */
 void f_seteuid(INT32 args)
 {
   int id;
+  int err;
 
   get_all_args("seteuid", args, "%i", &id);
  
@@ -303,18 +305,21 @@ void f_seteuid(INT32 args)
   }
 
 #ifdef HAVE_SETEUID
-  seteuid(id);
+  err = seteuid(id);
 #else
-  setresuid(-1, id, -1);
+  err = setresuid(-1, id, -1);
 #endif /* HAVE_SETEUID */
   pop_n_elems(args-1);
+  push_int(err);
 }
 #endif /* HAVE_SETEUID || HAVE_SETRESUID */
  
 #if defined(HAVE_SETEGID) || defined(HAVE_SETRESGID)
+/* int setegid(int egid) */
 void f_setegid(INT32 args)
 {
   int id;
+  int err;
 
   get_all_args("setegid", args, "%i", &id);
 
@@ -327,11 +332,12 @@ void f_setegid(INT32 args)
   }
  
 #ifdef HAVE_SETEGID
-  setegid(id);
+  err = setegid(id);
 #else
-  setresgid(-1, id, -1);
+  err = setresgid(-1, id, -1);
 #endif /* HAVE_SETEUID */
   pop_n_elems(args-1);
+  push_int(err);
 }
 #endif /* HAVE_SETEGID || HAVE_SETRESGID */
 
@@ -742,10 +748,10 @@ void pike_module_init(void)
   add_efun("setuid", f_setuid, "function(int:void)", OPT_SIDE_EFFECT);
   add_efun("setgid", f_setgid, "function(int:void)", OPT_SIDE_EFFECT);
 #if defined(HAVE_SETEUID) || defined(HAVE_SETRESUID)
-  add_efun("seteuid", f_seteuid, "function(int:void)", OPT_SIDE_EFFECT);
+  add_efun("seteuid", f_seteuid, "function(int:int)", OPT_SIDE_EFFECT);
 #endif /* HAVE_SETEUID || HAVE_SETRESUID */
 #if defined(HAVE_SETEGID) || defined(HAVE_SETRESGID)
-  add_efun("setegid", f_setegid, "function(int:void)", OPT_SIDE_EFFECT);
+  add_efun("setegid", f_setegid, "function(int:int)", OPT_SIDE_EFFECT);
 #endif /* HAVE_SETEGID || HAVE_SETRESGID */
 
   add_efun("getuid", f_getuid, "function(:int)", OPT_EXTERNAL_DEPEND);