Surely this should work as follows to avoid having new ID's added while you're creating the fixture?

* get lock
* read value
* write empty list
* release lock
* calculate fixture