' Rotate a Long to the right the specified number of times'' NOTE: requires Power2()Function RotateRight(ByVal value As Long, ByVal times As Long) As Long Dim i As Long, signBits As Long ' no need to rotate more times than required times = times Mod 32 ' return the number if it's a multiple of 32 If times = 0 Then RotateRight = value: Exit Function For i = 1 To times ' remember the sign bit and bit 0 signBits = value And &H80000001 ' clear those bits and shift to the right by one position value = (value And &H7FFFFFFE) 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 &H40000000) Or (CBool(signBits And _ 1) And &H80000000) Next RotateRight = valueEnd Function