diff --git a/src/algebra/mod.rs b/src/algebra/mod.rs
index 22c6d61971c92e3ba62b17e9f79a0b42b4f01e4f..5a70b1568d0c38fc6600b65152da342c682622a2 100644
--- a/src/algebra/mod.rs
+++ b/src/algebra/mod.rs
@@ -67,7 +67,7 @@ pub mod linalg;
 /// # }
 /// ```
 pub fn split_data_into_field_elements<F: PrimeField>(bytes: &[u8], modulus: usize) -> Vec<F> {
-    let bytes_per_element = (F::MODULUS_BIT_SIZE as usize) / 8;
+    let bytes_per_element = (F::MODULUS_BIT_SIZE as usize - 1) / 8;
 
     let mut elements = Vec::new();
     for chunk in bytes.chunks(bytes_per_element) {