diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 6cca49757c5b6bde2ccfc11de21cbbab14adcc38..5483d737f02038a3b9a82f6cea63ee3e48739237 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -1335,6 +1335,7 @@ static void send_thread(void* arg)
 	ulong		dur;
 	ulong		cps;
 	ulong		length;
+	BOOL		exempt;
 	BOOL		error=FALSE;
 	FILE*		fp;
 	file_t		f;
@@ -1552,9 +1553,13 @@ static void send_thread(void* arg)
 		if(xfer.credits) {
 			xfer.user->dls=(ushort)adjustuserrec(&scfg, xfer.user->number,U_DLS,5,1);
 			xfer.user->dlb=adjustuserrec(&scfg, xfer.user->number,U_DLB,10,total);
-			if(xfer.dir>=0 && !(scfg.dir[xfer.dir]->misc&DIR_FREE) 
-				/* && !chk_ar(&scfg, scfg.dir[xfer.dir]->ex_ar, xfer.user) */
-				&& !(xfer.user->exempt&FLAG('D')))
+			exempt=FALSE;
+			if(xfer.user->exempt&FLAG('D'))
+				exempt=TRUE;
+			if(scfg.dir[xfer.dir]->ex_ar[0]!=0
+				&& chk_ar(&scfg, scfg.dir[xfer.dir]->ex_ar, xfer.user))
+				exempt=TRUE;
+			if(xfer.dir>=0 && !(scfg.dir[xfer.dir]->misc&DIR_FREE) && !exempt)
 				subtract_cdt(&scfg, xfer.user, xfer.credits);
 		}
 		if(!xfer.tmpfile && !xfer.delfile)