This would probably deserve a comment explaining what it does. The negative conditions are not easy to read.