Have been fiddling and wanted to commit while the tests are passing.
Restricted fix-fact to only when the fix expression doesn't recurse on variables that have been bound after the match was made. This allowed me to remove that facts were forgotten when moving inside a fix term.