diff --git a/res/res_sip_registrar.c b/res/res_sip_registrar.c
index 0cc5821ee0a9c98961f408563836ca80a284b1ae..c3315d0becda2c2979290c49e1f7bf5db36a5896 100644
--- a/res/res_sip_registrar.c
+++ b/res/res_sip_registrar.c
@@ -259,7 +259,7 @@ static pj_bool_t registrar_on_rx_request(struct pjsip_rx_data *rdata)
 		return PJ_TRUE;
 	}
 
-	if (((added - deleted) + (!aor->remove_existing ? ao2_container_count(contacts) : 0)) > aor->max_contacts) {
+	if ((MAX(added - deleted, 0) + (!aor->remove_existing ? ao2_container_count(contacts) : 0)) > aor->max_contacts) {
 		/* Enforce the maximum number of contacts */
 		pjsip_endpt_respond_stateless(ast_sip_get_pjsip_endpoint(), rdata, 403, NULL, NULL, NULL);
 		return PJ_TRUE;