diff --git a/examples/inbreeding/mod.rs b/examples/inbreeding/mod.rs
index 8be8e058abcebd5502442dd9346113494e96cbd7..c01a0ecefcecf23c460db70db4a7c539ece6b29f 100644
--- a/examples/inbreeding/mod.rs
+++ b/examples/inbreeding/mod.rs
@@ -158,6 +158,10 @@ where
     pb.set_style(sty.clone());
     pb.set_message("main");
     for t in 0..=max_t {
+        if shards.len() < k {
+            break;
+        }
+
         if measurement_schedule(t) {
             let inbreeding = measure_inbreeding(&shards, k, nb_measurements, &mp, &sty, rng);
             println!("{}", inbreeding);
diff --git a/src/fec.rs b/src/fec.rs
index 47993e668131c0054af4433de9e188601387e1a1..9284d326093f961c5babe9ae37bd87feb4386c50 100644
--- a/src/fec.rs
+++ b/src/fec.rs
@@ -160,6 +160,10 @@ pub fn encode<F: PrimeField>(
 /// > - if there are too few shards
 /// > - if there are linear dependencies between shards
 pub fn decode<F: PrimeField>(shards: Vec<Shard<F>>) -> Result<Vec<u8>, KomodoError> {
+    if shards.is_empty() {
+        return Err(KomodoError::TooFewShards(0, 0));
+    }
+
     let k = shards[0].k;
     let np = shards.len();