I am not the original poster. Just one suggestion in case someone encounters this. It happens when you add a new index or modify existing index. Keep in mind indexes are not regenerated when you modify them in datadef.hal New entries which you save AFTER index modification, will have index records and you will find them, but not records before you modified the index. You need to empty and reimport the register to regenerate. There is even a last resort option which I have used in case of seriously corrupted register (--drop-register).
I do not recommend modifying existing index (key) in any way. It is best to use hal command to drop index and recreate it from scratch in datadef.hal. Then clear the register and reimport as mentioned above.
Another cause of the issue you are reporting is when your index is not unique - remember each index must contain all componentes of Main key, even if you think the index would be unique in another way.
My experience :)