memcpy( ptr, &pid, sizeof( ID ));
                d->nrdnlen[0] ^= 0x80;
 
-               rc = mdb_cursor_put( mc, &key, &data, MDB_NODUPDATA );
+               rc = mdb_cursor_put( mc, &key, &data, MDB_NODUPDATA|MDB_APPEND );
        }
        mdb_cursor_close( mc );
 
 
        MDB_txn *tid,
        Entry *e )
 {
-       return mdb_id2entry_put(op, tid, e, MDB_NOOVERWRITE);
+       return mdb_id2entry_put(op, tid, e, MDB_NOOVERWRITE|MDB_APPEND);
 }
 
 int mdb_id2entry_update(
 
                        for ( i=0; i<end; i++ ) {
                                if ( !ice->ids[i] ) continue;
                                data.mv_data = &ice->ids[i];
-                               rc = mdb_cursor_put( mc, &key, &data, MDB_NODUPDATA );
+                               rc = mdb_cursor_put( mc, &key, &data, MDB_NODUPDATA|MDB_APPEND );
                                if ( rc ) {
                                        if ( rc == MDB_KEYEXIST ) {
                                                rc = 0;