It's too much code to sort through to find the problem you've described - if there is one - so I suggest you identify where you believe multiple reflections should be happening and add some debug...