diff --git a/src/modules/spider/configure.in b/src/modules/spider/configure.in
index eafcdcf8426f14a088198adaefd59dd1de8b7262..50789d27effd5f37507920932e87cbf8193b960c 100644
--- a/src/modules/spider/configure.in
+++ b/src/modules/spider/configure.in
@@ -10,11 +10,11 @@ AC_CHECK_LIB(nsl, gethostbyname)
 AC_HAVE_HEADERS(arpa/inet.h sys/socketvar.h sys/protosw.h \
 	netinet/in.h sys/mman.h sys/utsname.h netdb.h sys/socket.h \
         sync.h sys/sockio.h sys/conf.h stropts.h \
-	sys/uio.h linux/mman.h sys/stream.h)
+	sys/uio.h linux/mman.h sys/stream.h unistd.h)
 
 AC_FUNC_MMAP
 
-AC_HAVE_FUNCS(perror strdup sendmsg)
+AC_HAVE_FUNCS(perror strdup sendmsg nice)
 
 AC_CHECK_TYPE(time_t, long)
 
diff --git a/src/modules/spider/spider.c b/src/modules/spider/spider.c
index 66432f5974c58fe1aaa30cca7651c34018e38715..fedbc12bd8acda3a0684decaeea96dc28ee7d0c8 100644
--- a/src/modules/spider/spider.c
+++ b/src/modules/spider/spider.c
@@ -22,6 +22,10 @@
 #include <sys/time.h>
 #endif
 
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 #include "stralloc.h"
 #include "global.h"
 #include "pike_macros.h"
@@ -91,6 +95,16 @@ void do_html_parse_lines(struct pike_string *ss,
 
 extern void f_parse_tree(INT32 argc);
 
+
+void f_nice(INT32 args)
+{
+#ifdef HAVE_NICE
+  int ta = sp[-1].u.integer;
+  if(!args) error("You must supply an argument to nice(int)!\n");
+  push_int(nice(ta));
+#endif
+}
+
 void f_http_decode_string(INT32 args)
 {
    int proc;
@@ -1265,6 +1279,7 @@ void pike_module_init(void)
   add_efun("timezone", f_timezone, "function(:int)", 0);
   add_efun("get_all_active_fd", f_get_all_active_fd, "function(:array(int))",
 	   OPT_EXTERNAL_DEPEND);
+  add_efun("nice", f_nice, "function(int:int)", 0);
 #if 0
   add_efun("name_process", f_name_process, "function(string:void)", 0);
 #endif