diff --git a/src/switch_core.c b/src/switch_core.c
index 6f9a1be7a9..ce844d1cc5 100644
--- a/src/switch_core.c
+++ b/src/switch_core.c
@@ -291,7 +291,7 @@ SWITCH_DECLARE(void) switch_core_session_hupall(void)
 	}
 	switch_mutex_unlock(runtime.session_table_mutex);
 
-	while(runtime.session_count) {
+	while(runtime.session_count > 0) {
 		switch_yield(10000);
 	}
 }
@@ -2492,7 +2492,9 @@ SWITCH_DECLARE(void) switch_core_session_destroy(switch_core_session_t **session
 	pool = NULL;
 
 	switch_mutex_lock(runtime.session_table_mutex);
-	runtime.session_count--;
+	if (runtime.session_count) {
+		runtime.session_count--;
+	}
 	switch_mutex_unlock(runtime.session_table_mutex);
 }