diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
index b899e04..15d2def 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
@@ -236,11 +236,7 @@
                             }
                         }
                         changes = removed;
-                        if ( m_size.decrementAndGet() < 0 )
-                        {
-                            m_size.set( 0 );
-//                            throw new IllegalStateException( "Component: " + m_componentManager.getName() + ", Size less than zero for dependency manager " + getName() + " removed: " + removed );
-                        }
+                        m_size.set( getServiceReferenceCount() );
                         serviceRemoved( ref );
                     }
                     else
@@ -274,11 +270,7 @@
                             }
                         }
                         changes = removed;
-                        if ( m_size.decrementAndGet() < 0 )
-                        {
-                            m_size.set( 0 );
-//                            throw new IllegalStateException( "Component: " + m_componentManager.getName() + ", Size less than zero for dependency manager " + getName() + " removed: " + removed );
-                        }
+                        m_size.set( getServiceReferenceCount() );
                         serviceRemoved( ref );
                     }
                     else
@@ -736,6 +728,12 @@
         return null;
     }
 
+    private int getServiceReferenceCount()
+    {
+        ServiceReference[] refs = getFrameworkServiceReferences();
+        return refs == null? 0: refs.length;
+    }
+
 
     /**
      * Returns a <code>ServiceReference</code> instances for a service
@@ -1648,8 +1646,8 @@
             }
             else
             {
-                m_componentManager.log( LogService.LOG_DEBUG, "Component: {0} dependency: {1} no services, removed: {2}", new Object[]
-                        {m_componentManager.getName(), getName(), removed}, null );
+                m_componentManager.log( LogService.LOG_DEBUG, "Component: {0} dependency: {1} no services", new Object[]
+                        {m_componentManager.getName(), getName()}, null );
                 removed.clear();//retainAll of empty set.
             }
             m_size.set( ( refArray == null ) ? 0 : refArray.length );
