but it's also not equivalent to the first: Quite correct...I forgot to change the unless() to a just if(). Updated my post.
Don't do X if A,B,C are all false <- this is the original unless statement
this the same: Do X if any of A,B,C are true (X doesn't happen if A,B,C are all false).
I don't think there is anything truly controversial here. I would also agree if the code has been working and this is a modification, I'd leave it alone (as we see its easy to make a mistake with all these Not's!). If the code is still in initial development, then simplifying this convoluted loop condition is something I'd seriously consider.