diff --git a/src/main.rs b/src/main.rs
index ccfe39dad5862cce133bd5b815a0317a9e273526..a96567058cc0bf71f6bf57cba51508e21df19642 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -270,14 +270,17 @@ async fn main() -> Result<(), anyhow::Error> {
                     .unwrap()
                     .as_secs();
                 let simulation_behavior = mobility_records[i].clone();
-                let relative_start_duration = mobility_records_times[i];
+                let relative_start_duration = if i == 0 {
+                    Duration::from_secs(0)
+                }
+                else { mobility_records_times[i] - mobility_records_times[i - 1] };
                 let rpc_url = rpc_url.clone();
                 let chain_id = chain_id;
                 let mut time_since_beginning = now;
+                tokio::time::sleep(relative_start_duration).await;
 
                 handles.push(tokio::spawn({
                     async move {
-                            tokio::time::sleep(relative_start_duration).await;
                             time_since_beginning += relative_start_duration.as_secs();
 
                             let provider = Provider::<Http>::try_from(rpc_url.clone()).unwrap();
diff --git a/src/utils/mobility_data.rs b/src/utils/mobility_data.rs
index 051c0b5c6226fb31afa36e7c37a1e48739117bbd..0bf444c3d90cf4b513d64979828b2f6b8733533f 100644
--- a/src/utils/mobility_data.rs
+++ b/src/utils/mobility_data.rs
@@ -99,6 +99,8 @@ pub fn generate_behaviors_from_records(records: Vec<MobilityRecord>) -> Vec<Mobi
     let earliest_datetime = find_earliest_mobility_record(&records);
 
     // let dataset_id = thread_rng().gen::<u64>();
+    let mut start_times:Vec<i128> = records.iter().map(|r| r.created_at.sub(earliest_datetime).whole_milliseconds()).collect();
+    start_times.sort_unstable();
 
     records
         .iter()
@@ -106,11 +108,11 @@ pub fn generate_behaviors_from_records(records: Vec<MobilityRecord>) -> Vec<Mobi
         .map(|(i, r)| MobilityBehavior {
             id: i as u64,
             // dataset_id,
-            relative_start_time: r.created_at.sub(earliest_datetime).whole_milliseconds(),
+            relative_start_time: start_times[i],
             quantity: quantify_mobility(r.service.clone()),
             mobility_record: r.clone(),
         })
-        .collect()
+        .collect::<Vec<MobilityBehavior>>()
 }
 
 /// Strech behavior start time for simulation