diff --git a/src/libaevol/7/Dna_7.cpp b/src/libaevol/7/Dna_7.cpp
index 814713e0545f7463fb41fa37433ef9fe22f3f238..6fb30c5d90808f65b7d42d88556be1667e85f778 100644
--- a/src/libaevol/7/Dna_7.cpp
+++ b/src/libaevol/7/Dna_7.cpp
@@ -273,7 +273,14 @@ Mutation* Dna_7::do_small_deletion(size_type pos, int16_t nb_del) {
   auto old_pos = pos;
 
   // Remove promoters containing at least one nucleotide from the sequence to  delete
-    ann_chrsm_->promoter_list().remove_promoters_around(pos, Utils::mod(pos + nb_del, length_), length_);
+  auto end_del = size_type{0};
+  #ifdef __EUKARYOTE
+    end_del = std::min(length(), pos + nb_del);
+  #else
+    end_del = Utils::mod(pos + nb_del, length());
+  #endif
+
+  ann_chrsm_->promoter_list().remove_promoters_around(pos, end_del, length());
 
   // Do the deletion and update promoter list
   if (pos + nb_del <= length()) { // the deletion does not contain the origin of