RingBuffer must always be a power of two.
diff --git a/single_sequencer.go b/single_sequencer.go
index 795f9d2..4170fa1 100644
--- a/single_sequencer.go
+++ b/single_sequencer.go
@@ -20,6 +20,10 @@
 }
 
 func NewSingleProducerSequencer(cursor *Sequence, ringSize int32, barrier Barrier) *SingleProducerSequencer {
+	if !isPowerOfTwo(ringSize) {
+		panic("The ring size must be a power of two, e.g. 2, 4, 8, 16, 32, 64, etc.")
+	}
+
 	return &SingleProducerSequencer{
 		previous: InitialSequenceValue,
 		gate:     InitialSequenceValue,
@@ -28,6 +32,9 @@
 		barrier:  barrier,
 	}
 }
+func isPowerOfTwo(value int32) bool {
+	return value > 0 && (value&(value-1)) == 0
+}
 
 type SingleProducerSequencer struct {
 	previous int64