Find Ceilings - but Furniture and Lights in the road

Perhaps I am being too persnickety… I’m working out a Room Tag application, I am using RayBounce.ByOriginDirection… to get Ceiling objects then set a Room Parameter Ceiling Height. If a ceiling doesn’t show up until either Structure or the next floor up, then I am assuming the Ceiling Type is actually EXP (Exposed to structure). Then I set that in a Room Tag.
Logic looks to work in a number of cases, however if there happens to a Furniture or Lights in the Road then the RayBounce stops and doesn’t check past them to find the Ceiling.

I turned off the Furniture and Lights in Visibility Graphics… but RayBounce Node still finds Furniture or Lights even though they are turned off.

I thought in Revit 2017, or 2018 the software did not consider what was not visible and so to improve performance… but Dynamo still sees these.

What trick or logic might I use to look past Furniture or Lights to find the occurrence of a Ceiling?
Can I somehow wrap the RayBounce inside a LoopWhile and break out of it when I see either a Ceiling, Structure or the next floor up? … I would assume somehow the loop needs to reset the Z component to a greater value and the next time around.


(I am still new to Dynamo and Revit, but not to programming… does Dynamo do well with Loops?)