diff --git a/intro_lab/pi.f90 b/intro_lab/pi.f90
index 964bce76f02dec1aab2518e5a7c3692a8f1fb8ab..4f4e1def58ea447aec5b3b2e6f2adc9ee8bed931 100644
--- a/intro_lab/pi.f90
+++ b/intro_lab/pi.f90
@@ -16,22 +16,22 @@ use omp_lib
 
 implicit none
 
-integer*8 :: num_steps = 100000000
-real*8 step
+integer(kind=8) :: num_steps = 100000000
+real(kind=8) step
 
 integer i
-real*8 x, pi, raw_sum
-real*8 start_time, run_time
+real(kind=8) x, pi, raw_sum
+real(kind=8) start_time, run_time
 
 step = 1.0D0 / num_steps
 
 start_time = OMP_GET_WTIME()
 
-raw_sum = 0.0
+raw_sum = 0.0D0
        
 do i = 1, num_steps
-    x = (i-0.5)*step
-    raw_sum = raw_sum + 4.0/(1.0+x*x)
+    x = (i-0.5D0)*step
+    raw_sum = raw_sum + 4.0D0/(1.0D0+x*x)
 enddo
 
 pi = step * raw_sum
diff --git a/intro_lab/solutions/pi_loop.f90 b/intro_lab/solutions/pi_loop.f90
index a8215ee5f36a00ee18df500c881b653bf5646aa0..91f5d83bfb3430959ce12a425307233e5aeba593 100755
--- a/intro_lab/solutions/pi_loop.f90
+++ b/intro_lab/solutions/pi_loop.f90
@@ -13,13 +13,13 @@ implicit none
 
 integer, parameter :: MAX_THREADS = 4
 
-integer*8 :: num_steps = 100000000
+integer(kind=8) :: num_steps = 100000000
 
-real*8 step
+real(kind=8) step
 
 integer i, num_threads
-real*8 x, pi, raw_sum
-real*8 start_time, run_time
+real(kind=8) x, pi, raw_sum
+real(kind=8) start_time, run_time
 
 step = 1.0D0 / num_steps
 
@@ -28,7 +28,7 @@ do num_threads = 1, MAX_THREADS
     call OMP_SET_NUM_THREADS(num_threads)
     start_time = OMP_GET_WTIME()
 
-    raw_sum = 0.0
+    raw_sum = 0.0D0
 
     !$omp parallel
 
@@ -38,8 +38,8 @@ do num_threads = 1, MAX_THREADS
 
         !$omp do private(x) reduction(+:raw_sum)
             do i = 1, num_steps
-                x = (i-0.5)*step
-                raw_sum = raw_sum + 4.0/(1.0+x*x)
+                x = (i-0.5D0)*step
+                raw_sum = raw_sum + 4.0D0/(1.0D0+x*x)
             enddo
         !$omp end do
 
diff --git a/intro_lab/solutions/pi_spmd_final.f90 b/intro_lab/solutions/pi_spmd_final.f90
index 6336dca90f95011dcb04f7d0fe6760fc7cd7d594..f21b2eace608f435f511bc09377720cd2f421f50 100755
--- a/intro_lab/solutions/pi_spmd_final.f90
+++ b/intro_lab/solutions/pi_spmd_final.f90
@@ -18,15 +18,15 @@ implicit none
 
 integer, parameter :: MAX_THREADS = 4
 
-integer*8 :: num_steps = 100000000
-real*8 step
+integer(kind=8) :: num_steps = 100000000
+real(kind=8) step
 
 integer i, num_threads
-real*8 pi, full_sum, partial_sum
-real*8 start_time, run_time
+real(kind=8) pi, full_sum, partial_sum
+real(kind=8) start_time, run_time
 
 integer thread_id
-real*8 x
+real(kind=8) x
 
 step = 1.0D0 / num_steps
 
@@ -34,20 +34,20 @@ do num_threads = 1, MAX_THREADS
 
     call OMP_SET_NUM_THREADS(num_threads)
     start_time = OMP_GET_WTIME()
-    full_sum = 0.0
+    full_sum = 0.0D0
 
     !$omp parallel private(thread_id, partial_sum, i, x)
 
         thread_id = OMP_GET_THREAD_NUM() + 1
-        partial_sum = 0.0
+        partial_sum = 0.0D0
 
         !$omp single
             print '(" num_threads = ", i0)', num_threads
         !$omp end single
 
         do i = thread_id, num_steps, num_threads
-            x = (i+0.5)*step
-            partial_sum = partial_sum + 4.0/(1.0+x*x)
+            x = (i-0.5D0)*step
+            partial_sum = partial_sum + 4.0D0/(1.0D0+x*x)
         enddo
 
         !$omp critical
diff --git a/intro_lab/solutions/pi_spmd_simple.f90 b/intro_lab/solutions/pi_spmd_simple.f90
index 89eb73784240f3d70460b834cfdb8b9cfa45d1b7..737ca1b0269b9c8d90473fca7302386cf0c09d1b 100755
--- a/intro_lab/solutions/pi_spmd_simple.f90
+++ b/intro_lab/solutions/pi_spmd_simple.f90
@@ -18,16 +18,16 @@ implicit none
 
 integer, parameter :: MAX_THREADS = 4
 
-integer*8 :: num_steps = 100000000
-real*8 step
+integer(kind=8) :: num_steps = 100000000
+real(kind=8) step
 
 integer i, num_threads
-real*8 pi, full_sum
-real*8 start_time, run_time
-real*8, dimension(1:MAX_THREADS) :: partial_sum
+real(kind=8) pi, full_sum
+real(kind=8) start_time, run_time
+real(kind=8), dimension(1:MAX_THREADS) :: partial_sum
 
 integer thread_id
-real*8 x
+real(kind=8) x
 
 step = 1.0D0 / num_steps
 
@@ -39,15 +39,15 @@ do num_threads = 1, MAX_THREADS
     !$omp parallel private(thread_id, i, x)
 
         thread_id = OMP_GET_THREAD_NUM() + 1
-        partial_sum(thread_id) = 0.0
+        partial_sum(thread_id) = 0.0D0
 
         if (thread_id == 1) then
             print '(" num_threads = ", i0)', num_threads
         endif
 
         do i = thread_id, num_steps, num_threads
-            x = (i+0.5)*step
-            partial_sum(thread_id) = partial_sum(thread_id) + 4.0/(1.0+x*x)
+            x = (i-0.5D0)*step
+            partial_sum(thread_id) = partial_sum(thread_id) + 4.0D0/(1.0D0+x*x)
         enddo
 
     !$omp end parallel