Save yourself some extra work every time the fool scries and assign everyone "fool roles" at the same time as you assign real roles. That way you just have to look it up on the list instead of counting how many of each are left each time, and it guarantees the fool gets consistent results for free.
Edit: Hmm, on second thought, that could lead to some bizarre readings like getting the Baner after the Baner has already been lynched, so it might not work so well.