diff --git a/src/libaevol/7/Individual_7.cpp b/src/libaevol/7/Individual_7.cpp
index bd1b8c4c99d3ecb547b1ef8d00fb67d2fc153c1c..8f2f9a72b06f590d03e3959b02a1a90ce0ae8060 100644
--- a/src/libaevol/7/Individual_7.cpp
+++ b/src/libaevol/7/Individual_7.cpp
@@ -142,6 +142,20 @@ void Individual_7::start_stop_RNA() {
         if (motif_id >= 26 && motif_id < 48) {
           // LAGGING
           int t_motif_id = motif_id - 26;
+          #ifdef __EUKARYOTE
+            if (dna_pos < PROM_SIZE) {
+              for (int i = 0 ; i < PROM_SIZE ; ++i) {
+                prom_dist_lagging[i] = 1;
+              }
+              motif_id = 47;
+            }
+            else {
+              prom_dist_lagging[t_motif_id] =
+                PROM_SEQ_LAG[t_motif_id] ==
+                annotated_chromosome_->dna_->data_[dna_pos - t_motif_id]
+                ? 0 : 1;
+            }
+          #else
           prom_dist_lagging[t_motif_id] =
               PROM_SEQ_LAG[t_motif_id] ==
                       annotated_chromosome_->dna_->data_[
@@ -150,8 +164,23 @@ void Individual_7::start_stop_RNA() {
                                                          t_motif_id :
                                                    dna_pos - t_motif_id]
                   ? 0 : 1;
+        #endif
         } else if (motif_id < 22) {
           // LEADING
+          #ifdef __EUKARYOTE
+            if (dna_pos > len - PROM_SIZE) {
+              for (int i = 0 ; i < PROM_SIZE ; ++i) {
+                prom_dist_leading[i] = 1;
+              }
+              motif_id = 21;
+            }
+            else {
+              prom_dist_leading[motif_id] =
+                PROM_SEQ_LEAD[motif_id] ==
+                annotated_chromosome_->dna_->data_[dna_pos + motif_id]
+                ? 0 : 1;
+            }
+          #else
           prom_dist_leading[motif_id] =
               PROM_SEQ_LEAD[motif_id] ==
                       annotated_chromosome_->dna_->data_[
@@ -162,6 +191,7 @@ void Individual_7::start_stop_RNA() {
                                                           motif_id]
                   ? 0
                   : 1;
+          #endif
         } else {
           // removed terminator search
         }
@@ -953,7 +983,11 @@ void Individual_7::translate_protein(const ExpSetup&, double w_max) {
 
         count_loop++;
         c_pos += CODON_SIZE;
-        c_pos = c_pos >= dna_length ? c_pos - dna_length : c_pos;
+        #ifdef __EUKARYOTE
+          assert(c_pos < dna_length);
+        #else
+          c_pos = c_pos >= dna_length ? c_pos - dna_length : c_pos;
+        #endif
       }
     } else { // LAGGING
       #ifdef BASE_2