diff --git a/source/KKRnano/source/ProcessKKRresults_mod.F90 b/source/KKRnano/source/ProcessKKRresults_mod.F90
index 9e8f90f2bb6127376b3631831593e5d8d4439c2d..e003281c0999576bb9a7fb78f8f451e0edcfdfb8 100644
--- a/source/KKRnano/source/ProcessKKRresults_mod.F90
+++ b/source/KKRnano/source/ProcessKKRresults_mod.F90
@@ -1131,10 +1131,10 @@ module ProcessKKRresults_mod
       reclen = max(reclen, 4*8 + 1*1 + 3*8)
     end if
     if (noncobfield) then
-      ! The constraint bfields, torques, and moments before fixing directions
-      ! (each double(3))
+      ! The constraint bfields (from this and from last iteration), torques,
+      ! and moments before fixing directions (each double(3))
       recnum = recnum + 1
-      reclen = max(reclen, (3+3+3)*8)
+      reclen = max(reclen, (3+3+3+3)*8)
     end if
 
   end subroutine
@@ -1206,8 +1206,11 @@ module ProcessKKRresults_mod
         irec = irec + 1
       endif
       if (params%noncobfield) then
-        write(unit=r1fu, rec=irec) calc%bfields(ila)%bfield_constr, &
-          calc%bfields(ila)%mag_torque, calc%bfields(ila)%mag_mom
+        write(unit=r1fu, rec=irec) &
+            calc%bfields(ila)%bfield_constr, &
+            calc%bfields(ila)%last_bfield_constr, &
+            calc%bfields(ila)%mag_torque, &
+            calc%bfields(ila)%mag_mom
         irec = irec + 1
       end if
     end do
@@ -1658,13 +1661,15 @@ module ProcessKKRresults_mod
     double precision delta_angle !NOCO
     integer :: max_delta_atom !NOCO
     double precision, dimension(3) :: dir ! NOCO, direction of local frame of reference
-    double precision, dimension(3) :: constr_field
+    double precision, dimension(3) :: constr_field, last_constr_field
     double precision, dimension(3) :: torque ! torque of the current atom
     double precision, dimension(3) :: newmoment ! magnetic moment before angle constraint
     double precision :: max_torque_sqrd      ! squared magnitude of largest torque so far
     integer :: max_torque_atom               ! atom with largest torque so far
     double precision :: constr_angle_change, max_constr_angle_change
     integer :: max_constr_angle_change_atom
+    double precision :: constr_field_change, max_constr_field_change
+    integer :: max_constr_field_change_atom
     integer :: reclen, recnum, irec, ie, lrecres2
     integer :: lcoremax, i1, ispin, lpot
     character(len=*), parameter :: &
@@ -1680,6 +1685,8 @@ module ProcessKKRresults_mod
     F82="('                    Largest torque magnitude [Ry] = ',E12.6)", &
     F83="('                    Largest change of angle for constraint moment at atom = ', i5)", &
     F84="('                    Largest change of angle for constraint moment (deg) = ', f10.6)", &
+    F85="('                    Largest change in constraint field at atom = ', i5)", &
+    F80="('                    Largest change in constraint field (Ry) = ', e10.4)", &
     F94="(4X,'nuclear charge  ',F10.6,9X,'core charge =   ',F10.6)"
     
     integer :: npotd
@@ -1694,6 +1701,8 @@ module ProcessKKRresults_mod
     max_torque_atom = 0
     max_constr_angle_change = 0.
     max_constr_angle_change_atom = -1 ! Initially a flag that means "feature not used (yet)"
+    max_constr_field_change = 0.
+    max_constr_field_change_atom = 0
 
     ! Calculate size of data written per atom
     call calculateResults1FileShapes(reclen, recnum, compute_total_energy, &
@@ -1776,7 +1785,7 @@ module ProcessKKRresults_mod
           irec = irec + 1
 
           if (noncobfield) then
-            read(71, rec=irec) constr_field, torque, newmoment
+            read(71, rec=irec) constr_field, last_constr_field, torque, newmoment
             irec = irec + 1
           end if
 
@@ -1831,6 +1840,17 @@ module ProcessKKRresults_mod
                 max_constr_angle_change = constr_angle_change
                 max_constr_angle_change_atom = i1
               end if
+
+              ! Look for largest change in constraining field
+              !   Reuse variable for difference
+              last_constr_field = last_constr_field - constr_field
+              !   Calculate the absolute value of the change (squared)
+              constr_field_change = dot_product(last_constr_field, last_constr_field)
+              if (constr_field_change > max_constr_field_change) then
+                ! Update
+                max_constr_field_change = constr_field_change
+                max_constr_field_change_atom = i1
+              end if
             end if
           end if
 
@@ -1882,6 +1902,8 @@ module ProcessKKRresults_mod
           if (max_constr_angle_change_atom >= 0) then
             write(6, fmt=F83) max_constr_angle_change_atom
             write(6, fmt=F84) 180.0/PI*max_constr_angle_change
+            write(6, fmt=F85) max_constr_field_change_atom
+            write(6, fmt=F80) sqrt(max_constr_field_change)
           end if
         end if
         write(6, '(79(1h+))')
diff --git a/source/KKRnano/source/bfield/bfield.f90 b/source/KKRnano/source/bfield/bfield.f90
index 6b804b5a867b7612d3cf13c846cbeb24eeaf6c2a..c157fdfc2e661a7270bd74c75b8302e25bd7fffd 100644
--- a/source/KKRnano/source/bfield/bfield.f90
+++ b/source/KKRnano/source/bfield/bfield.f90
@@ -32,6 +32,7 @@ module mod_bfield
     ! Noncollinear magnetic fields
     double precision, dimension(3) :: bfield_ext    !! external magnetic field in cartesian coordinates
     double precision, dimension(3) :: bfield_constr !! constraining field in cartesian coordinates
+    double precision, dimension(3) :: last_bfield_constr !! constraining field of last iteration
 
     ! Torque and other information used to update the constraints fields
     double precision, dimension(3) :: mag_torque     !! Magnetic torque
diff --git a/source/KKRnano/source/bfield/torque.f90 b/source/KKRnano/source/bfield/torque.f90
index a061c7ca94decb85388fe447f426ad2f4afd0872..51d3638f976ff35c64bb754e5fcb1586cfe08510 100644
--- a/source/KKRnano/source/bfield/torque.f90
+++ b/source/KKRnano/source/bfield/torque.f90
@@ -183,6 +183,9 @@ contains
     mag_mom_dir = bfield%mag_mom(:) / mag_mom_len
     mag_mom_sign = sign(1., dot_product(mag_mom_dir, dir))
 
+    ! Save previous iterations field
+    bfield%last_bfield_constr = bfield%bfield_constr
+
     if (constr_mode == 3) then
       bfield%bfield_constr(:) = bfield%bfield_constr(:) - &
               ( mag_mom_sign * (bfield%mag_torque(:) / mag_mom_len) * &