diff --git a/addons/crm/models/crm_team_member.py b/addons/crm/models/crm_team_member.py
index 3e40577256542db89e894792c3a0d2eb44dfffe0..e6333e01fbea83bb6fce6f539fc10bf8f314865d 100644
--- a/addons/crm/models/crm_team_member.py
+++ b/addons/crm/models/crm_team_member.py
@@ -156,7 +156,7 @@ class Team(models.Model):
         # auto-commit except in testing mode
         auto_commit = not getattr(threading.current_thread(), 'testing', False)
         commit_bundle_size = int(self.env['ir.config_parameter'].sudo().get_param('crm.assignment.commit.bundle', 100))
-        while population:
+        while population and any(weights):
             counter += 1
             member_id = random.choices(population, weights=weights, k=1)[0]
             member_index = population.index(member_id)
diff --git a/addons/crm/tests/test_crm_lead_assignment.py b/addons/crm/tests/test_crm_lead_assignment.py
index e528b5a87cb8ab94221530154bda070d6ae2a71d..4379290cbb70fc0968a1d95a7e75179ad53e0422 100644
--- a/addons/crm/tests/test_crm_lead_assignment.py
+++ b/addons/crm/tests/test_crm_lead_assignment.py
@@ -533,3 +533,32 @@ class TestLeadAssign(TestLeadAssignCommon):
         self.assertFalse(dupe_lead.exists())
         self.assertEqual(master_opp.team_id, self.sales_team_1, 'Opportunity: should keep its sales team')
         self.assertEqual(master_opp.user_id, self.user_sales_manager, 'Opportunity: should keep its salesman')
+
+    def test_no_assign_if_exceed_max_assign(self):
+        """ Test no leads being assigned to any team member if weights list sums to 0"""
+
+        leads = self._create_leads_batch(
+            lead_type='lead',
+            user_ids=[False],
+            count=1
+        )
+
+        sales_team_4 = self.env['crm.team'].create({
+            'name': 'Sales Team 4',
+            'sequence': 15,
+            'use_leads': True,
+            })
+        sales_team_4_m1 = self.env['crm.team.member'].create({
+            'user_id': self.user_sales_salesman.id,
+            'crm_team_id': sales_team_4.id,
+            'assignment_max': 30,
+        })
+
+        sales_team_4_m1.lead_month_count = 50
+        leads.team_id = sales_team_4.id
+
+        members_data = sales_team_4_m1._assign_and_convert_leads(work_days=0.2)
+        self.assertEqual(
+            len(members_data[sales_team_4_m1]['assigned']),
+            0,
+            "If team member has lead count greater than max assign,then do not assign any more")