diff --git a/src/test/cordSubscriber/cordSubscriberTest.py b/src/test/cordSubscriber/cordSubscriberTest.py
index 724453f..ccb45ca 100644
--- a/src/test/cordSubscriber/cordSubscriberTest.py
+++ b/src/test/cordSubscriber/cordSubscriberTest.py
@@ -121,10 +121,10 @@
             self.channel_join_update(chan, join_time)
             return chan
 
-      def channel_leave(self, chan = 0):
+      def channel_leave(self, chan = 0, force = False):
             if self.join_map.has_key(chan):
                   del self.join_map[chan]
-            self.leave(chan)
+            self.leave(chan, force = force)
 
       def channel_update(self, chan, stats_type, packets, t=0):
             if type(chan) == type(0):
@@ -565,7 +565,7 @@
       def igmp_leave_verify(self, subscriber):
             if subscriber.has_service('IGMP'):
                   for chan in xrange(subscriber.num):
-                        subscriber.channel_leave(chan)
+                        subscriber.channel_leave(chan, force = True)
                         time.sleep(2)
                         log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
                         #self.recv_timeout = True
diff --git a/src/test/utils/Channels.py b/src/test/utils/Channels.py
index 6119e8a..80a086e 100644
--- a/src/test/utils/Channels.py
+++ b/src/test/utils/Channels.py
@@ -177,12 +177,12 @@
         self.last_chan = chan
         return chan, join_start
 
-    def leave(self, chan):
+    def leave(self, chan, force = False):
         if chan is None:
             chan = self.last_chan
         if chan is None or chan >= self.num:
             return False
-        if self.get_state(chan) != self.Joined:
+        if force is False and self.get_state(chan) != self.Joined:
             return False
         groups = [self.channels[chan]]
         self.igmp_leave(groups)
