if (thenextr.IsNull()) 
     thenextr = next;
   else {
-    //Modification of requrcive to cycle
+    //Modification of recursive to cycle
     Handle(Transfer_Binder) theBinder = thenextr;
     while( theBinder != next ) { 
       if( theBinder->NextResult().IsNull() ) {
         theBinder = theBinder->NextResult();
     }
   }
-  //former requrcive
+  //former recursive
   // if (thenextr.IsNull()) thenextr = next;
   // else if (thenextr == next) return;
   // else thenextr->AddResult (next);
 {
   if (thenextr.IsNull()) return;
   if (thenextr == next) thenextr.Nullify();
-  else thenextr->CutResult (next);
+  //else thenextr->CutResult (next);
+  else {
+    Handle(Transfer_Binder) currBinder = thenextr, currNext;
+    while( !( (currNext = currBinder->NextResult()) == next ) ) {
+      if( currNext.IsNull() )
+        return;
+      currBinder = currNext;
+    }
+    currBinder->CutResult(next);
+  }
 }
 
 //=======================================================================