<!DOCTYPE html><html><body>As currently defined, `shift x minBound` calls `shiftR` with a negative displacement.<br><br>This would avoid that:<br>```<br>shift x n<br>   | n >= 0 = shiftL x n<br>   | n == minBound = shiftR (shiftR x maxBound) 1<br>   | otherwise = shiftR x (-n)<br>```<br><br>P.S. Philosophically, `rotate` on a negative `Integer` should do sign extension in the least significant bits (though by the description of `rotate` it should not...).<div style='white-space: pre-wrap'>—<br>Sent from my phone with K-9 Mail.</div></body></html>