diff --git a/quad10/fenomens/lab/p4/MC-2.f90 b/quad10/fenomens/lab/p4/MC-2.f90
index 554890d..ccc2941 100644
--- a/quad10/fenomens/lab/p4/MC-2.f90
+++ b/quad10/fenomens/lab/p4/MC-2.f90
@@ -7,19 +7,25 @@
   integer*4 :: I, J, IMC, MCTOT, MCINI, MCD, IPAS, N, SEED, NSEED, SEED0, pbc
   integer :: genrand_int31
   character(100) :: NOM
-  logical :: SAVEFINALCONF
+  logical :: SAVEFINALCONF, SAVEEVOLUTION
 
   integer :: SUMI
-  real(dp) :: SUME, SUME2, SUMM, SUMAM, SUMM2, VARE, VARM, CV, CHI
+  real(dp) :: SUME, SUME2, SUMM, SUMAM, SUMM2, VARE_TIMES_SUMI, VARM_TIMES_SUMI, CV, CHI
 
-  ! This should be replaced by L but it doesn't work dynamically, so we're
-  ! setting 64 as the upper limit which should be higher than L.
-  integer*2 :: S(1:64, 1:64)
+  ! Donat que les matrius a Fortran han de tenir una mida fixada i no poden
+  ! dependre dinàmicament d'un paràmetre L, fem S de mida 128x128, i establim
+  ! 128 com el valor màxim de L.
+  integer*2 :: S(1:128, 1:128)
 
-  ! Inicialitzem algunes variables sobre el problema
-  namelist /DADES/ L, NOM, TEMP, NSEED, SEED0, MCTOT, MCINI, MCD, SAVEFINALCONF
+  ! Inicialitzem algunes variables sobre el problema, que es passen al programa amb un namelist
+  namelist /DADES/ L, NOM, TEMP, NSEED, SEED0, MCTOT, MCINI, MCD, SAVEFINALCONF, SAVEEVOLUTION
   read(nml = DADES, unit = 5)
 
+  if (L < 1 .or. L > 128) then
+    print *, "ERROR: L ha de ser un enter entre 1 i 128."
+    stop
+  endif
+
   N = L*L
 
   ! Cache dels valors de l'exponencial
@@ -27,6 +33,7 @@
     W(I) = (2**30 - 1 + 2**30)*exp(-float(I)/TEMP)
   enddo
 
+  ! Variables on anirem sumant les magnituds per fer el promig posteriorment
   SUMI = 0
   SUME = 0
   SUME2 = 0
@@ -35,6 +42,12 @@
   SUMAM = 0
   SUMM2 = 0
 
+  ! Si s'ha especificat de guardar l'evolució temporal, obrim el fitxer on la guardarem
+  if (SAVEEVOLUTION) then
+    open(12, file = "data_out/" // trim(NOM) // ".ev")
+  endif
+
+  ! Fem la simulació per NSEED seeds inicials.
   do SEED = SEED0, SEED0 + NSEED - 1
     print *, "Seed: ", SEED
 
@@ -43,11 +56,13 @@
 
     E = energ(S, L)
     M = magne(S, L)
+    if (SAVEEVOLUTION) then
+      write (12, *) "0", E, M
+    endif
 
     ! Iterem amb el mètode de Montecarlo
     do IMC = 1, MCTOT
       do IPAS = 1, N
-        ! LOS LOOPS HACEN COSAS
         I = mod(genrand_int31(), L) + 1
         J = mod(genrand_int31(), L) + 1
         SUMA = S(PBC(I - 1, L), J) + &
@@ -59,7 +74,7 @@
         if (DIFE > 0) then
           DELTA = genrand_int31()
           if (DELTA >= W(int(DIFE))) then
-            ! NO ho acceptem
+            ! NO ho acceptem, passem a la següent volta del loop
             cycle
           endif
         endif
@@ -70,6 +85,12 @@
         M = M + 2*S(I, J)
       enddo
 
+      if (SAVEEVOLUTION) then
+        write (12, *) IMC, E, M
+      endif
+
+      ! Per evitar les correlacions de configuracions consecutives, només
+      ! prenem mesures cada MCD configuracions.
       if (IMC > MCINI .and. mod(IMC, MCD) == 0) then
         SUMI = SUMI + 1
 
@@ -89,15 +110,15 @@
   SUMM = SUMM/SUMI
   SUMAM = SUMAM/SUMI
   SUMM2 = SUMM2/SUMI
-  VARE = SUME2 - SUME**2
-  VARM = SUMM2 - SUMM**2
+  VARE_TIMES_SUMI = SUME2 - SUME**2
+  VARM_TIMES_SUMI = SUMM2 - SUMM**2
   CV = (SUME2 - SUME**2)/real(N*TEMP**2)
   CHI = (SUMM2 - SUMAM**2)/real(N*TEMP)
 
-  ! Guardem a un fiter els promitjos
+  ! Guardem a un fitxer els promitjos
   open(unit = 13, file = "data_out/" // trim(NOM) // ".res")
-  ! Valors: L, T, <E>, <E**2>, Var(E), <M>, <|M|>, <M**2>, Var(M), C_V, CHI
-  write(13, *) L, TEMP, SUME, SUME2, VARE, SUMM, SUMAM, SUMM2, VARM, CV, CHI
+  ! Valors: L, T, <E>, <E**2>, Var(E)*SUMI, <M>, <|M|>, <M**2>, Var(M)*SUMI, C_V, CHI
+  write(13, *) L, TEMP, SUME, SUME2, VARE_TIMES_SUMI, SUMM, SUMAM, SUMM2, VARM_TIMES_SUMI, CV, CHI
 
   if (SAVEFINALCONF) then
     call writeConfig(S, L, "data_out/" // trim(NOM) // ".conf")
@@ -105,4 +126,7 @@
 
   ! Tanquem els fitxers de sortida
   close(13)
+  if (SAVEEVOLUTION) then
+    close(12)
+  endif
 endprogram main
