Indentation and line-splitting is odd.  Please put the && at the end of the previous line, so the next line's bwlimit_next lines up under that of the previous line, making it easier to see what they have in common and where they differ.  Also, the part after || should be lined up under the part before; if it looks to you like it does, check for tabs (please use spaces for indent); it doesn't appear lined up in the code-review !