Hi
I haven't looked into this in depth.
But at first glance, it seems like you might have a problem with the variable 'n': it's in the main function and reappears in the auxiliary function 'taviz'. This wouldn't be a problem if 'n' were a local variable to 'taviz', but it isn't. Therefore, when 'taviz' is called from 'c:b', the value of 'n' is modified, which can cause objects to be processed multiple times or, conversely, not at all, as seems to be your case.
Therefore: try changing this
'(defun taviz (so)'
to this
'(defun taviz (so / n)'