' Rotate an Integer to the right the specified number of times'' NOTE: requires Power2()Function RotateRightI(ByVal value As Integer, ByVal times As Long) As Integer Dim i As Long, signBits As Integer ' no need to rotate more times than required times = times Mod 16 ' return the number if it's a multiple of 16 If times = 0 Then RotateRightI = value: Exit Function For i = 1 To times ' remember the sign bit and bit 0 signBits = value And &H8001 ' clear those bits and shift to the right by one position value = (value And &H7FFE) 2 ' if the number was negative, then re-insert the bit ' if bit 0 was set, then set the sign bit value = value Or ((signBits < 0) And &H4000) Or (CBool(signBits And 1) _ And &H8000) Next RotateRightI = valueEnd Function