diff --git a/src/sbbs3/chk_ar.cpp b/src/sbbs3/chk_ar.cpp
index 632a438c6be9fe1afc1ea73d53d5693673f72a98..02d54185a070e46560708a194c7d1c5aa77bdab5 100644
--- a/src/sbbs3/chk_ar.cpp
+++ b/src/sbbs3/chk_ar.cpp
@@ -394,7 +394,7 @@ bool sbbs_t::ar_exp(uchar **ptrptr, user_t* user)
 				break;
 			case AR_PCR:	/* post/call ratio (by percentage) */
 				if(user->logons>user->posts
-					&& (!user->posts || (100/(user->logons/user->posts))<(long)n))
+					&& (!user->posts || (100/((float)user->logons/user->posts))<(long)n))
 					result=_not;
 				else
 					result=!_not;
@@ -406,7 +406,7 @@ bool sbbs_t::ar_exp(uchar **ptrptr, user_t* user)
 				l=user->dlb;
 				if(!l) l=1;
 				if(user->dlb>user->ulb
-					&& (!user->ulb || (100/(l/user->ulb))<n))
+					&& (!user->ulb || (100/((float)l/user->ulb))<n))
 					result=_not;
 				else
 					result=!_not;
@@ -418,7 +418,7 @@ bool sbbs_t::ar_exp(uchar **ptrptr, user_t* user)
 				i=user->dls;
 				if(!i) i=1;
 				if(user->dls>user->uls
-					&& (!user->uls || (100/(i/user->uls))<n))
+					&& (!user->uls || (100/((float)i/user->uls))<n))
 					result=_not;
 				else
 					result=!_not;
diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index 5cf266a64506317a67b6a22d91a1da839006a33b..836e5ae0dc7dcfd3c373e906646e00fe62769ef9 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -1523,7 +1523,7 @@ static BOOL ar_exp(scfg_t* cfg, uchar **ptrptr, user_t* user)
 				if(user==NULL)
 					result=not;
 				else if(user->logons>user->posts
-					&& (!user->posts || 100/(user->logons/user->posts)<(long)n))
+					&& (!user->posts || 100/((float)user->logons/user->posts)<(long)n))
 					result=not;
 				else
 					result=!not;
@@ -1535,7 +1535,7 @@ static BOOL ar_exp(scfg_t* cfg, uchar **ptrptr, user_t* user)
 					l=user->dlb;
 					if(!l) l=1;
 					if(user->dlb>user->ulb
-						&& (!user->ulb || 100/(l/user->ulb)<n))
+						&& (!user->ulb || 100/((float)l/user->ulb)<n))
 						result=not;
 					else
 						result=!not;
@@ -1548,7 +1548,7 @@ static BOOL ar_exp(scfg_t* cfg, uchar **ptrptr, user_t* user)
 					i=user->dls;
 					if(!i) i=1;
 					if(user->dls>user->uls
-						&& (!user->uls || 100/(i/user->uls)<n))
+						&& (!user->uls || 100/((float)i/user->uls)<n))
 						result=not;
 					else
 						result=!not;