diff --git a/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java b/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java
index dbd2c58..a894872 100755
--- a/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java
+++ b/framework/src/main/java/org/apache/felix/framework/searchpolicy/R4SearchPolicyCore.java
@@ -1060,14 +1060,6 @@
                     getBundleSymbolicName(targetFragment),
                     new IModule[] { targetFragment });
             }
-for (Iterator iter = fragmentMap.entrySet().iterator(); iter.hasNext(); )
-{
-    Map.Entry entry = (Map.Entry) iter.next();
-    String symName = (String) entry.getKey();
-    IModule[] fragments = (IModule[]) entry.getValue();
-    m_logger.log(Logger.LOG_DEBUG, "(FRAGMENT) WIRE: "
-        + rootModule + " -> " + symName + " -> " + fragments[0]);
-}
 
             // This variable maps an unresolved module to a list of candidate
             // sets, where there is one candidate set for each requirement that
@@ -1118,9 +1110,13 @@
                 for (Iterator iter = fragmentMap.entrySet().iterator(); iter.hasNext(); )
                 {
                     Map.Entry entry = (Map.Entry) iter.next();
+                    String symName = (String) entry.getKey();
                     IModule[] fragments = (IModule[]) entry.getValue();
 // TODO: FRAGMENT - For now, just attach first candidate.
                     list.add(fragments[0]);
+                    setResolved(fragments[0], true);
+m_logger.log(Logger.LOG_DEBUG, "(FRAGMENT) WIRE: "
+    + rootModule + " -> " + symName + " -> " + fragments[0]);
                 }
                 try
                 {
