diff --git a/fem/src/SolverUtils.F90 b/fem/src/SolverUtils.F90
index 95ac6ed362..09c00027b8 100644
--- a/fem/src/SolverUtils.F90
+++ b/fem/src/SolverUtils.F90
@@ -9663,13 +9663,14 @@ SUBROUTINE InitializeTimestep( Solver )
      ndofs = Solver % Matrix % NumberOfRows
      Var => Solver % Variable
 
+     eFact = 0.0_dp
      ExtrapolateInTime = ListGetLogical(CurrentModel % Simulation, &
               'Timestep extrapolation', GotIt  )
-
-     eFact = ListGetCReal(CurrentModel % Simulation, &
-               'Timestep extrapolation factor', GotIt )
-     IF(.NOT.GotIt) THEN
-       IF(ExtrapolateInTime) eFact = 1._dp
+     IF( ExtrapolateInTime ) THEN
+       eFact = ListGetCReal(CurrentModel % Simulation, &
+           'Timestep extrapolation factor', GotIt )
+       IF(.NOT.GotIt) eFact = 1._dp
+       ALLOCATE(NewVals(SIZE(Var % Values)))
      END IF
 
      IF ( Solver % TimeOrder>1 .OR. method/='bdf') THEN
@@ -9707,8 +9708,9 @@ SUBROUTINE InitializeTimestep( Solver )
          END DO
 
          IF( ExtrapolateInTime ) THEN
-           Var % Values = (1+eFact)*Var % Values-eFact*Var % PrevValues(:,1)
-           Var % PrevValues(:,1) = (Var % Values+eFact*Var % PrevValues(:,1))/(1+eFact)
+           NewVals = (1+eFact)*Var % Values-eFact*Var % PrevValues(:,1)
+           Var % PrevValues(:,1) = Var % Values 
+           Var % Values = NewVals
          ELSE
            Var % PrevValues(:,1) = Var % Values
          END IF
@@ -9728,14 +9730,16 @@ SUBROUTINE InitializeTimestep( Solver )
        END DO
 
        IF( ExtrapolateInTime ) THEN
-         Var % Values = (1+eFact)*Var % Values - eFact*Var % PrevValues(:,1)
-         Var % PrevValues(:,1) = (Var % Values+eFact*Var % PrevValues(:,1))/(1+eFact)
+         NewVals = (1+eFact)*Var % Values-eFact*Var % PrevValues(:,1)
+         Var % PrevValues(:,1) = Var % Values 
+         Var % Values = NewVals
        ELSE
          Var % PrevValues(:,1) = Var % Values
        END IF
      END IF
 
-
+     IF( ExtrapolateInTime ) DEALLOCATE(NewVals) 
+    
      IF( ListGetLogical( Solver % Values,'Nonlinear Timestepping', GotIt ) ) THEN
        IF( Solver % DoneTime > 1 ) THEN
          A => Solver % Matrix