diff --git a/p2p/src/peers.rs b/p2p/src/peers.rs
index 449ae355b..892622093 100644
--- a/p2p/src/peers.rs
+++ b/p2p/src/peers.rs
@@ -513,7 +513,13 @@ impl Peers {
 	}
 
 	pub fn enough_peers(&self) -> bool {
-		self.connected_peers().len() >= self.config.peer_min_preferred_count() as usize
+		self.peer_count() >= self.config.peer_min_preferred_count()
+	}
+
+	/// We have enough peers, both total connected and outbound connected
+	pub fn healthy_peers_mix(&self) -> bool {
+		self.enough_peers()
+			&& self.peer_outbound_count() >= self.config.peer_min_preferred_count() / 2
 	}
 
 	/// Removes those peers that seem to have expired
diff --git a/servers/src/grin/seed.rs b/servers/src/grin/seed.rs
index 5af7df96e..6561210fb 100644
--- a/servers/src/grin/seed.rs
+++ b/servers/src/grin/seed.rs
@@ -186,10 +186,7 @@ fn monitor_peers(
 	// maintenance step first, clean up p2p server peers
 	peers.clean_peers(config.peer_max_count() as usize);
 
-	// We have enough peers, both total connected and outbound connected so we are good.
-	if peers.peer_count() >= config.peer_min_preferred_count()
-		&& peers.peer_outbound_count() >= config.peer_min_preferred_count() / 2
-	{
+	if peers.healthy_peers_mix() {
 		return;
 	}
 
@@ -318,7 +315,7 @@ fn listen_for_addrs(
 	let addrs: Vec<SocketAddr> = rx.try_iter().collect();
 
 	// If we have a healthy number of outbound peers then we are done here.
-	if peers.peer_outbound_count() >= p2p.config.peer_min_preferred_count() / 2 {
+	if peers.healthy_peers_mix() {
 		return;
 	}