diff -r e63bf7596cda include/struct.h
--- a/include/struct.h	Fri May 10 19:32:14 2013 +0200
+++ b/include/struct.h	Sat May 11 12:46:21 2013 -0600
@@ -1750,6 +1750,7 @@
 #define MODE_AUDITORIUM		0x20000000
 #define MODE_ONLYSECURE		0x40000000
 #define MODE_NONICKCHANGE	0x80000000
+#define MODE_PERMANENT		0x100000000
 
 #define is_halfop is_half_op
 /*
diff -r e63bf7596cda src/channel.c
--- a/src/channel.c	Fri May 10 19:32:14 2013 +0200
+++ b/src/channel.c	Sat May 11 12:46:21 2013 -0600
@@ -116,6 +116,7 @@
 	{MODE_AUDITORIUM, 'u', 0, 0},
 	{MODE_ONLYSECURE, 'z', 0, 0},
 	{MODE_NONICKCHANGE, 'N', 0, 0},
+        {MODE_PERMANENT, 'P', 0, 0},
 	{0x0, 0x0, 0x0}
 };
 
@@ -1369,8 +1370,8 @@
 	Ban *ban;
 	Link *lp;
 
-        /* if (--chptr->users <= 0) */
-	if (chptr->users == 0 || --chptr->users == 0)
+	/* if (--chptr->users <= 0) */
+	if ((chptr->users == 0 || --chptr->users == 0) && !(chptr->mode.mode & MODE_PERMANENT))
 	{
 		/*
 		 * Now, find all invite links from channel structure
diff -r e63bf7596cda src/modules/m_mode.c
--- a/src/modules/m_mode.c	Fri May 10 19:32:14 2013 +0200
+++ b/src/modules/m_mode.c	Sat May 11 12:46:21 2013 -0600
@@ -901,6 +901,7 @@
 	  case MODE_NOCTCP:
 	  case MODE_NONICKCHANGE:
 	  case MODE_NOINVITE:
+          case MODE_PERMANENT:
 		setthephuckingmode:
 		  retval = 0;
 		  if (what == MODE_ADD) {
