diff --git a/lab_1/C/lab01_ex2.cu b/lab_1/C/lab01_ex2.cu
index cef871113e0b5b8f750f4825d56bcfa678ea3117..7b31e461dd1293941603a301c632997c6e1cec4e 100644
--- a/lab_1/C/lab01_ex2.cu
+++ b/lab_1/C/lab01_ex2.cu
@@ -25,9 +25,9 @@ float generate_hash(int n, float *y)
 /**
  * Helper method that calculates the elapsed time between two time intervals (in milliseconds).
  */
-long get_elapsed(tval t0, tval t1)
+double get_elapsed(tval t0, tval t1)
 {
-    return (t1.tv_sec - t0.tv_sec) * 1000 + (t1.tv_usec - t0.tv_usec) / 1000;
+    return (double)(t1.tv_sec - t0.tv_sec) * 1000.0L + (double)(t1.tv_usec - t0.tv_usec) / 1000.0L;
 }
 
 /**
diff --git a/lab_2/C/lab02_ex3_6.cu b/lab_2/C/lab02_ex3_6.cu
index aba4942cb72cb327253058e4a81d83644be20f76..ab78190085cbe4bcaa49b6add29c5a867b0401fa 100644
--- a/lab_2/C/lab02_ex3_6.cu
+++ b/lab_2/C/lab02_ex3_6.cu
@@ -120,15 +120,15 @@ void checkCUDAError()
 /**
  * Calculates the elapsed time between two time intervals (in milliseconds).
  */
-long get_elapsed(tval t0, tval t1)
+double get_elapsed(tval t0, tval t1)
 {
-    return (t1.tv_sec - t0.tv_sec) * 1000 + (t1.tv_usec - t0.tv_usec) / 1000;
+    return (double)(t1.tv_sec - t0.tv_sec) * 1000.0L + (double)(t1.tv_usec - t0.tv_usec) / 1000.0L;
 }
 
 /**
  * Stores the result image and prints a message.
  */
-void store_result(int index, long elapsed_cpu, long elapsed_gpu,
+void store_result(int index, double elapsed_cpu, double elapsed_gpu,
                      int width, int height, float *image)
 {
     char path[255];
@@ -137,7 +137,7 @@ void store_result(int index, long elapsed_cpu, long elapsed_gpu,
     writeBMPGrayscale(width, height, image, path);
     
     printf("Step #%d Completed - Result stored in \"%s\".\n", index, path);
-    printf("Elapsed CPU: %ldms / ", elapsed_cpu);
+    printf("Elapsed CPU: %fms / ", elapsed_cpu);
     
     if (elapsed_gpu == 0)
     {
@@ -145,7 +145,7 @@ void store_result(int index, long elapsed_cpu, long elapsed_gpu,
     }
     else
     {
-        printf("Elapsed GPU: %ldms\n", elapsed_gpu);
+        printf("Elapsed GPU: %fms\n", elapsed_gpu);
     }
 }
 
@@ -310,7 +310,7 @@ int main(int argc, char **argv)
     float    *d_image_out[2] = { 0 };
     int      image_size      = 0;
     tval     t[2]            = { 0 };
-    long     elapsed[2]      = { 0 };
+    double   elapsed[2]      = { 0 };
     dim3     grid(1);                       // The grid will be defined later
     dim3     block(BLOCK_SIZE, BLOCK_SIZE); // The block size will not change
     
diff --git a/lab_2/Fortran/lab02_ex3_6_c.cu b/lab_2/Fortran/lab02_ex3_6_c.cu
index 2ed6aab7a6b99aff4967daafb59c96bd88b60b5b..ba5c3959c93b31b1343c8211d7c65d818f36a728 100644
--- a/lab_2/Fortran/lab02_ex3_6_c.cu
+++ b/lab_2/Fortran/lab02_ex3_6_c.cu
@@ -120,15 +120,15 @@ void checkCUDAError()
 /**
  * Calculates the elapsed time between two time intervals (in milliseconds).
  */
-long get_elapsed(tval t0, tval t1)
+double get_elapsed(tval t0, tval t1)
 {
-    return (t1.tv_sec - t0.tv_sec) * 1000 + (t1.tv_usec - t0.tv_usec) / 1000;
+    return (double)(t1.tv_sec - t0.tv_sec) * 1000.0L + (double)(t1.tv_usec - t0.tv_usec) / 1000.0L;
 }
 
 /**
  * Stores the result image and prints a message.
  */
-void store_result(int index, long elapsed_cpu, long elapsed_gpu,
+void store_result(int index, double elapsed_cpu, double elapsed_gpu,
                   int width, int height, float *image)
 {
     char path[255];
@@ -137,7 +137,7 @@ void store_result(int index, long elapsed_cpu, long elapsed_gpu,
     writeBMPGrayscale(width, height, image, path);
     
     printf("Step #%d Completed - Result stored in \"%s\".\n", index, path);
-    printf("Elapsed CPU: %ldms / ", elapsed_cpu);
+    printf("Elapsed CPU: %fms / ", elapsed_cpu);
     
     if (elapsed_gpu == 0)
     {
@@ -145,7 +145,7 @@ void store_result(int index, long elapsed_cpu, long elapsed_gpu,
     }
     else
     {
-        printf("Elapsed GPU: %ldms\n", elapsed_gpu);
+        printf("Elapsed GPU: %fms\n", elapsed_gpu);
     }
 }