fixed shift logic