}
 
 static int
-mdb_waitfixup( Operation *op, ww_ctx *ww, MDB_cursor *mci, MDB_cursor *mcd )
+mdb_waitfixup( Operation *op, ww_ctx *ww, MDB_cursor *mci, MDB_cursor *mcd, ID2 *scopes )
 {
        int rc = 0;
        ww->flag = 0;
        mdb_txn_renew( ww->txn );
        mdb_cursor_renew( ww->txn, mci );
        mdb_cursor_renew( ww->txn, mcd );
+
+       if ( scopes[0].mid > 1 ) {
+               MDB_val key;
+               int i;
+               key.mv_size = sizeof(ID);
+               for ( i=1; i<scopes[0].mid; i++ ) {
+                       key.mv_data = &scopes[i].mid;
+                       mdb_cursor_get( mcd, &key, &scopes[i].mval, MDB_SET );
+               }
+       }
+
        if ( ww->mcd ) {
                MDB_val key, data;
+
                key.mv_size = sizeof(ID);
                key.mv_data = &ww->key;
                data = ww->data;
                        rs->sr_ref = NULL;
 
                        if ( wwctx.flag ) {
-                               rs->sr_err = mdb_waitfixup( op, &wwctx, mci, mcd );
+                               rs->sr_err = mdb_waitfixup( op, &wwctx, mci, mcd, scopes );
                                if ( rs->sr_err ) {
                                        send_ldap_result( op, rs );
                                        goto done;
                                        goto done;
                                }
                                if ( wwctx.flag ) {
-                                       rs->sr_err = mdb_waitfixup( op, &wwctx, mci, mcd );
+                                       rs->sr_err = mdb_waitfixup( op, &wwctx, mci, mcd, scopes );
                                        if ( rs->sr_err ) {
                                                send_ldap_result( op, rs );
                                                goto done;