diff -Nura Unreal.orig/include/h.h Unreal.new/include/h.h
--- Unreal.orig/include/h.h	2006-12-16 17:35:31.000000000 +0200
+++ Unreal.new/include/h.h	2006-12-17 03:40:06.000000000 +0200
@@ -437,6 +437,7 @@
 extern MODVAR long UMODE_STRIPBADWORDS; /* 0x80000000	 */
 extern MODVAR long UMODE_HIDEWHOIS; /* hides channels in /whois */
 extern MODVAR long UMODE_NOCTCP;    /* blocks all ctcp (except dcc and action) */
+extern MODVAR long UMODE_NOFAKELAG;	/* Exception from fake lag */
 extern MODVAR long AllUmodes, SendUmodes;
 
 extern MODVAR long SNO_KILLS;
diff -Nura Unreal.orig/include/struct.h Unreal.new/include/struct.h
--- Unreal.orig/include/struct.h	2006-12-16 17:35:31.000000000 +0200
+++ Unreal.new/include/struct.h	2006-12-17 03:40:49.000000000 +0200
@@ -373,6 +373,7 @@
 #define IsEyes(x)		((x)->user->snomask & SNO_EYES)
 #define IsWhois(x)	        ((x)->umodes & UMODE_WHOIS)
 #define IsKix(x)		((x)->umodes & UMODE_KIX)
+#define IsNoFakeLag(x)	((x)->umodes & UMODE_NOFAKELAG)
 #define IsHelpOp(x)		((x)->umodes & UMODE_HELPOP)
 #define IsAdmin(x)		((x)->umodes & UMODE_ADMIN)
 
@@ -574,6 +575,7 @@
 #define OFLAG_SADMIN	0x01000000	/* services admin gets +a */
 #define OFLAG_WHOIS     0x02000000	/* gets auto +W on oper up */
 #define OFLAG_HIDE      0x04000000	/* gets auto +x on oper up */
+#define OFLAG_NOFAKELAG	0x08000000	/* can set +F */
 #define OFLAG_TKL       0x10000000	/* can use G:lines and shuns */
 #define OFLAG_GZL       0x20000000	/* can use global Z:lines */
 #define OFLAG_OVERRIDE	0x40000000	/* can use oper-override */
@@ -581,13 +583,14 @@
 #define OFLAG_LOCAL	(OFLAG_REHASH|OFLAG_HELPOP|OFLAG_GLOBOP|OFLAG_WALLOP|OFLAG_LOCOP|OFLAG_LROUTE|OFLAG_LKILL|OFLAG_KLINE|OFLAG_UNKLINE|OFLAG_LNOTICE)
 #define OFLAG_GLOBAL	(OFLAG_LOCAL|OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE)
 #define OFLAG_ISGLOBAL	(OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE|OFLAG_TKL|OFLAG_GZL|OFLAG_OVERRIDE)
-#define OFLAG_NADMIN	(OFLAG_NETADMIN | OFLAG_SADMIN | OFLAG_ADMIN | OFLAG_GLOBAL | OFLAG_UMODEQ | OFLAG_DCCDENY)
+#define OFLAG_NADMIN	(OFLAG_NETADMIN | OFLAG_SADMIN | OFLAG_ADMIN | OFLAG_GLOBAL | OFLAG_UMODEQ | OFLAG_DCCDENY | OFLAG_NOFAKELAG)
 #define OFLAG_ADMIN_	(OFLAG_ADMIN | OFLAG_GLOBAL | OFLAG_DCCDENY)
 #define OFLAG_COADMIN_	(OFLAG_COADMIN | OFLAG_GLOBAL | OFLAG_DCCDENY)
-#define OFLAG_SADMIN_	(OFLAG_SADMIN | OFLAG_GLOBAL | OFLAG_UMODEQ | OFLAG_DCCDENY)
+#define OFLAG_SADMIN_	(OFLAG_SADMIN | OFLAG_GLOBAL | OFLAG_UMODEQ | OFLAG_DCCDENY | OFLAG_NOFAKELAG)
 
 #define OPCanOverride(x) ((x)->oflag & OFLAG_OVERRIDE)
 #define OPCanUmodeq(x)	((x)->oflag & OFLAG_UMODEQ)
+#define OPCanNoFakeLag(x)	((x)->oflag & OFLAG_NOFAKELAG)
 #define OPCanDCCDeny(x)	((x)->oflag & OFLAG_DCCDENY)
 #define OPCanTKL(x)	((x)->oflag & OFLAG_TKL)
 #define OPCanGZL(x)	((x)->oflag & OFLAG_GZL)
diff -Nura Unreal.orig/src/modules/m_mode.c Unreal.new/src/modules/m_mode.c
--- Unreal.orig/src/modules/m_mode.c	2006-12-16 17:35:31.000000000 +0200
+++ Unreal.new/src/modules/m_mode.c	2006-12-17 03:44:31.000000000 +0200
@@ -2258,6 +2258,8 @@
 		{
 			if ((sptr->umodes & UMODE_KIX) && (!OPCanUmodeq(sptr) || !IsAnOper(sptr)))
 				sptr->umodes &= ~UMODE_KIX;
+			if ((sptr->umodes & UMODE_NOFAKELAG) && (!OPCanNoFakeLag(sptr) || !IsAnOper(sptr)))
+				sptr->umodes &= ~UMODE_NOFAKELAG;
 			if ((sptr->umodes & UMODE_SECURE) && !IsSecure(sptr))
 				sptr->umodes &= ~UMODE_SECURE;
 			if (!(sptr->umodes & UMODE_SECURE) && IsSecure(sptr))
diff -Nura Unreal.orig/src/modules/m_svsnoop.c Unreal.new/src/modules/m_svsnoop.c
--- Unreal.orig/src/modules/m_svsnoop.c	2006-12-16 17:35:31.000000000 +0200
+++ Unreal.new/src/modules/m_svsnoop.c	2006-12-17 03:45:03.000000000 +0200
@@ -113,7 +113,7 @@
 					                   UMODE_SERVICES | UMODE_SADMIN | UMODE_ADMIN |
 					                   UMODE_NETADMIN | UMODE_WHOIS | UMODE_KIX |
 					                   UMODE_DEAF | UMODE_HIDEOPER | UMODE_FAILOP |
-					                   UMODE_COADMIN | UMODE_VICTIM);
+					                   UMODE_COADMIN | UMODE_VICTIM | UMODE_NOFAKELAG);
 					acptr->oflag = 0;
 					remove_oper_snomasks(acptr);
 					send_umode_out(acptr, acptr, oldumodes);
diff -Nura Unreal.orig/src/modules/m_svso.c Unreal.new/src/modules/m_svso.c
--- Unreal.orig/src/modules/m_svso.c	2006-12-16 17:35:31.000000000 +0200
+++ Unreal.new/src/modules/m_svso.c	2006-12-17 03:42:53.000000000 +0200
@@ -174,7 +174,7 @@
                 acptr->umodes &=
                     ~(UMODE_NETADMIN | UMODE_WHOIS);
                 acptr->umodes &=
-                    ~(UMODE_KIX | UMODE_DEAF | UMODE_HIDEOPER | UMODE_VICTIM);
+                    ~(UMODE_KIX | UMODE_DEAF | UMODE_HIDEOPER | UMODE_VICTIM | UMODE_NOFAKELAG);
                 acptr->oflag = 0;
 		remove_oper_snomasks(acptr);
 		RunHook2(HOOKTYPE_LOCAL_OPER, acptr, 0);
diff -Nura Unreal.orig/src/parse.c Unreal.new/src/parse.c
--- Unreal.orig/src/parse.c	2006-12-16 17:35:31.000000000 +0200
+++ Unreal.new/src/parse.c	2006-12-17 03:46:55.000000000 +0200
@@ -158,7 +158,7 @@
  */
 inline void parse_addlag(aClient *cptr, int cmdbytes)
 {
-	if (!IsServer(cptr) && 
+	if (!IsServer(cptr) && !IsNoFakeLag(cptr) &&
 #ifdef FAKELAG_CONFIGURABLE
 		!(cptr->class && (cptr->class->options & CLASS_OPT_NOFAKELAG)) && 
 #endif
diff -Nura Unreal.orig/src/s_conf.c Unreal.new/src/s_conf.c
--- Unreal.orig/src/s_conf.c	2006-12-16 17:35:31.000000000 +0200
+++ Unreal.new/src/s_conf.c	2006-12-17 03:36:30.000000000 +0200
@@ -204,6 +204,7 @@
 	OFLAG_UMODEQ, 'q',
 	OFLAG_DCCDENY, 'd',
 	OFLAG_ADDLINE, 'X',
+	OFLAG_NOFAKELAG, 'F',
 	0, 0
 };
 
@@ -238,6 +239,7 @@
 	{ OFLAG_LOCAL,		"local" },
 	{ OFLAG_LOCOP,		"locop"},
 	{ OFLAG_NADMIN,		"netadmin"},
+	{ OFLAG_NOFAKELAG,	"nofakelag"},
 	{ OFLAG_SADMIN_,	"services-admin"},
 };
 
diff -Nura Unreal.orig/src/s_svs.c Unreal.new/src/s_svs.c
--- Unreal.orig/src/s_svs.c	2006-12-16 17:35:31.000000000 +0200
+++ Unreal.new/src/s_svs.c	2006-12-17 03:34:23.000000000 +0200
@@ -79,6 +79,7 @@
 	OFLAG_UMODEQ, 'q',
 	OFLAG_DCCDENY, 'd',
 	OFLAG_ADDLINE, 'X',
+	OFLAG_NOFAKELAG, 'F',
 	0, 0
 };
 
diff -Nura Unreal.orig/src/umodes.c Unreal.new/src/umodes.c
--- Unreal.orig/src/umodes.c	2006-12-16 17:35:31.000000000 +0200
+++ Unreal.new/src/umodes.c	2006-12-17 03:33:22.000000000 +0200
@@ -78,6 +78,7 @@
 long UMODE_STRIPBADWORDS = 0L; /* Strip badwords */
 long UMODE_HIDEWHOIS = 0L;     /* Hides channels in /whois */
 long UMODE_NOCTCP = 0L;	       /* Blocks ctcp (except dcc and action) */
+long UMODE_NOFAKELAG = 0L;	   /* Exception from fake lag */
 
 long SNO_KILLS = 0L;
 long SNO_CLIENT = 0L;
@@ -155,6 +156,7 @@
 	UmodeAdd(NULL, 't', UMODE_GLOBAL, NULL, &UMODE_SETHOST);
 	UmodeAdd(NULL, 'G', UMODE_GLOBAL, NULL, &UMODE_STRIPBADWORDS);
 	UmodeAdd(NULL, 'p', UMODE_GLOBAL, NULL, &UMODE_HIDEWHOIS);
+	UmodeAdd(NULL, 'F', UMODE_GLOBAL, umode_allow_opers, &UMODE_NOFAKELAG);
 	SnomaskAdd(NULL, 'k', umode_allow_all, &SNO_KILLS);
 	SnomaskAdd(NULL, 'c', umode_allow_opers, &SNO_CLIENT);
 	SnomaskAdd(NULL, 'f', umode_allow_opers, &SNO_FLOOD);
