btrieve allows for duplicate key values in an index. btrieve handles duplicate keys using either a "linked duplicate" method, or by using a "repeating duplicate" method (this terminology started being used when version 6.0 was released). the linked duplicate method used a pair of record pointers in the index page itself to point to the head and tail of a doubly linked list of duplicate keys. this meant that the order of the duplicate keys in the list was in the order they were entered. the duplicate key method did not use a linked list, but rather made all the keys unique by creating a new index key and appending the address of the record pointer to the end of the key. this means that the key is retrieved via its position order.