diff --git a/secure/guestmaster.c b/secure/guestmaster.c
new file mode 100644
index 0000000..0304d8d
--- /dev/null
+++ b/secure/guestmaster.c
@@ -0,0 +1,60 @@
+// MorgenGrauen MUDlib
+//
+// guestmaster.c -- Verwalter von Gast-Logins
+//
+// $Id: guestmaster.c 8909 2014-08-20 21:33:55Z Zesstra $
+#pragma no_clone,no_inherit,no_shadow
+#pragma strict_types,save_types,rtt_checks
+
+#include <wizlevels.h>
+
+nosave int max_guests = 10; /* Max no. of guests. -1 is 'unlimited' */
+nosave object *guests = ({});
+nosave int    *ltime = ({});
+
+protected void create()
+{
+  seteuid(getuid());
+}
+
+nomask int new_guest () {
+  int ix;
+
+  if (!max_guests) return 0;
+  if (load_name(previous_object()) != "/secure/login")
+    return 0;
+ 
+  if ((ix = member(guests,0)) == -1) {
+    ix = sizeof(guests);
+    if (max_guests < 0 || ix < max_guests) 
+    {
+      guests += ({ 0 }), ltime += ({ 0 });
+    }
+    else {
+      int mintime, minix;
+      mintime = time();
+      for (ix = 0; ix < sizeof(guests); ix++) {
+        if (guests[ix] && ltime[ix] < mintime) {
+          mintime=ltime[ix];
+          minix=ix;
+        }
+      }
+      ix = minix;
+    }
+  }
+  return ix+1;
+}
+
+nomask void set_guest (int ix, object pl) {
+  if (load_name(previous_object()) != "/secure/login") return;
+  guests[ix-1] = pl;
+  ltime[ix-1] = time();
+}
+
+nomask int query_max_guests() { return max_guests; }
+nomask int set_max_guests(int v) {
+  if (!process_call() && LORD_SECURITY)
+    max_guests = v;
+  return max_guests;
+}
+
