diff --git a/sources/integrals.F90 b/sources/integrals.F90
index 47db729..7bf6bd6 100644
--- a/sources/integrals.F90
+++ b/sources/integrals.F90
@@ -331,13 +331,14 @@ module integrals
 
 ! write the integral file header
 !
-      write(runit,'("#",a8,17a25)')                                            &
+      write(runit,'("#",a8,20a25)')                                            &
           'step', 'time', '|Bx| int', '|Bx| inf'                               &
                     , '|Bx| y-adv', '|Bx| y-shr', '|Bx| y-dif'                 &
                     , '|Bx| z-adv', '|Bx| z-shr', '|Bx| z-dif'                 &
                     , 'Vin lower' , 'Vin upper'                                &
                     , 'Emag', 'Emag(inf)'                                      &
-                    , 'Emag(x-adv)', 'Emag(y-adv)', 'Emag(z-adv)'
+                    , 'Emag(x-adv)', 'Emag(y-adv)', 'Emag(z-adv)'              &
+                    , 'Emag(x-dif)', 'Emag(y-dif)', 'Emag(z-dif)'
       write(runit,"('#')")
 
     end if ! store
@@ -426,10 +427,10 @@ module integrals
     use coordinates    , only : nb, nbl, nbu, ne, nel, neu
     use coordinates    , only : adx, ady, adz, advol, voli
     use coordinates    , only : periodic
-    use coordinates    , only : xmin, xmax, xarea
+    use coordinates    , only : xmin, xmax
     use coordinates    , only : ymin, ymax, yarea
 #if NDIMS == 3
-    use coordinates    , only : zmin, zmax, zarea
+    use coordinates    , only : zmin, zmax
 #endif /* NDIMS == 3 */
     use equations      , only : idn, ipr, ivx, ivy, ivz, ibx, iby, ibz, ibp
     use equations      , only : ien, imx, imy, imz
@@ -523,11 +524,11 @@ module integrals
 !
       dvol  = advol(pdata%meta%level)
       dvolh = 0.5d+00 * dvol
-      dyz   = ady(pdata%meta%level) * adz(pdata%meta%level) / xarea
+      dyz   = ady(pdata%meta%level) * adz(pdata%meta%level)
 #if NDIMS == 3
-      dxy   = adx(pdata%meta%level) * ady(pdata%meta%level) / zarea
+      dxy   = adx(pdata%meta%level) * ady(pdata%meta%level)
 #endif /* NDIMS == 3 */
-      dxz   = adx(pdata%meta%level) * adz(pdata%meta%level) / yarea
+      dxz   = adx(pdata%meta%level) * adz(pdata%meta%level)
       dh(1) = adx(pdata%meta%level)
       dh(2) = ady(pdata%meta%level)
       dh(3) = adz(pdata%meta%level)
@@ -693,6 +694,158 @@ module integrals
 !
         inarr(21) = inarr(7)
 
+! fluxes across the X boundaries
+!
+        if (.not. periodic(1)) then
+
+! lower X-boundary
+!
+          if (pdata%meta%xmin <= xmin + dh(1)) then
+
+! advection of magnetic energy through the lower X boundary
+!
+#if NDIMS == 3
+            inarr(23) = inarr(23) + sum((pdata%q(iby,nbl:nb,nb:ne,nb:ne)**2    &
+                                       + pdata%q(ibz,nbl:nb,nb:ne,nb:ne)**2)   &
+                                       * pdata%q(ivx,nbl:nb,nb:ne,nb:ne)       &
+                                      - (pdata%q(ivy,nbl:nb,nb:ne,nb:ne)       &
+                                       * pdata%q(iby,nbl:nb,nb:ne,nb:ne)       &
+                                       + pdata%q(ivz,nbl:nb,nb:ne,nb:ne)       &
+                                       * pdata%q(ibz,nbl:nb,nb:ne,nb:ne))      &
+                                       * pdata%q(ibx,nbl:nb,nb:ne,nb:ne)) * dyz
+#else /* NDIMS == 3 */
+            inarr(23) = inarr(23) + sum((pdata%q(iby,nbl:nb,nb:ne,  :  )**2    &
+                                       + pdata%q(ibz,nbl:nb,nb:ne,  :  )**2)   &
+                                       * pdata%q(ivx,nbl:nb,nb:ne,  :  )       &
+                                      - (pdata%q(ivy,nbl:nb,nb:ne,  :  )       &
+                                       * pdata%q(iby,nbl:nb,nb:ne,  :  )       &
+                                       + pdata%q(ivz,nbl:nb,nb:ne,  :  )       &
+                                       * pdata%q(ibz,nbl:nb,nb:ne,  :  ))      &
+                                       * pdata%q(ibx,nbl:nb,nb:ne,  :  )) * dyz
+#endif /* NDIMS == 3 */
+
+            if (resistivity > 0.0d+00) then
+
+#if NDIMS == 3
+! the Y component of current density
+!
+              tmp(1,:,:) = 0.5d+00 * (pdata%q(ibx,nb ,nb:ne,nbu:neu)           &
+                                   -  pdata%q(ibx,nb ,nb:ne,nbl:nel)) / dh(3)  &
+                                   - (pdata%q(ibz,nb ,nb:ne,nb :ne )           &
+                                    - pdata%q(ibz,nbl,nb:ne,nb :ne )) / dh(1)
+
+! the Z component of current density
+!
+              tmp(2,:,:) =           (pdata%q(iby,nb ,nb :ne ,nb:ne)           &
+                                   -  pdata%q(iby,nbl,nb :ne ,nb:ne)) / dh(1)  &
+                         - 0.5d+00 * (pdata%q(ibx,nb ,nbu:neu,nb:ne)           &
+                                    - pdata%q(ibx,nb ,nbl:nel,nb:ne)) / dh(2)
+
+! diffusion of magnetic energy through the lower X boundary
+!
+              inarr(26) = inarr(26)                                            &
+                        + sum(tmp(1,:,:) * pdata%q(ibz,nb,nb:ne,nb:ne)         &
+                            - tmp(2,:,:) * pdata%q(iby,nb,nb:ne,nb:ne)) * dyz
+#else /* NDIMS == 3 */
+! the Y component of current density
+!
+              tmp(1,:,:) =           (pdata%q(ibz,nbl,nb:ne,  :  )             &
+                                    - pdata%q(ibz,nb ,nb:ne,  :  )) / dh(1)
+
+! the Z component of current density
+!
+              tmp(2,:,:) =           (pdata%q(iby,nb ,nb :ne ,  :  )           &
+                                   -  pdata%q(iby,nbl,nb :ne ,  :  )) / dh(1)  &
+                         - 0.5d+00 * (pdata%q(ibx,nb ,nbu:neu,  :  )           &
+                                    - pdata%q(ibx,nb ,nbl:nel,  :  )) / dh(2)
+
+! diffusion of magnetic energy through the lower X boundary
+!
+              inarr(26) = inarr(26)                                            &
+                        + sum(tmp(1,:,:) * pdata%q(ibz,nb,nb:ne,  :  )         &
+                            - tmp(2,:,:) * pdata%q(iby,nb,nb:ne,  :  )) * dyz
+#endif /* NDIMS == 3 */
+
+            end if ! resistivity
+
+          end if ! xmin
+
+! upper X-boundary
+!
+          if (pdata%meta%xmax >= xmax - dh(1)) then
+
+! advection of magnetic energy through the upper X boundary
+!
+#if NDIMS == 3
+            inarr(23) = inarr(23) + sum((pdata%q(iby,ne:neu,nb:ne,nb:ne)**2    &
+                                       + pdata%q(ibz,ne:neu,nb:ne,nb:ne)**2)   &
+                                       * pdata%q(ivx,ne:neu,nb:ne,nb:ne)       &
+                                      - (pdata%q(ivy,ne:neu,nb:ne,nb:ne)       &
+                                       * pdata%q(iby,ne:neu,nb:ne,nb:ne)       &
+                                       + pdata%q(ivz,ne:neu,nb:ne,nb:ne)       &
+                                       * pdata%q(ibz,ne:neu,nb:ne,nb:ne))      &
+                                       * pdata%q(ibx,ne:neu,nb:ne,nb:ne)) * dyz
+#else /* NDIMS == 3 */
+            inarr(23) = inarr(23) + sum((pdata%q(iby,ne:neu,nb:ne,  :  )**2    &
+                                       + pdata%q(ibz,ne:neu,nb:ne,  :  )**2)   &
+                                       * pdata%q(ivx,ne:neu,nb:ne,  :  )       &
+                                      - (pdata%q(ivy,ne:neu,nb:ne,  :  )       &
+                                       * pdata%q(iby,ne:neu,nb:ne,  :  )       &
+                                       + pdata%q(ivz,ne:neu,nb:ne,  :  )       &
+                                       * pdata%q(ibz,ne:neu,nb:ne,  :  ))      &
+                                       * pdata%q(ibx,ne:neu,nb:ne,  :  )) * dyz
+#endif /* NDIMS == 3 */
+
+            if (resistivity > 0.0d+00) then
+
+#if NDIMS == 3
+! the Y component of current density
+!
+              tmp(1,:,:) = 0.5d+00 * (pdata%q(ibx,ne ,nb:ne,nbu:neu)           &
+                                   -  pdata%q(ibx,ne ,nb:ne,nbl:nel)) / dh(3)  &
+                                   - (pdata%q(ibz,neu,nb:ne,nb :ne )           &
+                                    - pdata%q(ibz,ne ,nb:ne,nb :ne )) / dh(1)
+
+! the Z component of current density
+!
+              tmp(2,:,:) =           (pdata%q(iby,neu,nb :ne ,nb:ne)           &
+                                   -  pdata%q(iby,ne ,nb :ne ,nb:ne)) / dh(1)  &
+                         - 0.5d+00 * (pdata%q(ibx,ne ,nbu:neu,nb:ne)           &
+                                    - pdata%q(ibx,ne ,nbl:nel,nb:ne)) / dh(2)
+
+! diffusion of magnetic energy through the upper X boundary
+!
+              inarr(26) = inarr(26)                                            &
+                        - sum(tmp(1,:,:) * pdata%q(ibz,ne,nb:ne,nb:ne)         &
+                            - tmp(2,:,:) * pdata%q(iby,ne,nb:ne,nb:ne)) * dyz
+#else /* NDIMS == 3 */
+! the Y component of current density
+!
+              tmp(1,:,:) =           (pdata%q(ibz,neu,nb:ne,  :  )             &
+                                    - pdata%q(ibz,ne ,nb:ne,  :  )) / dh(1)
+
+! the Z component of current density
+!
+              tmp(2,:,:) =           (pdata%q(iby,neu,nb :ne ,  :  )           &
+                                   -  pdata%q(iby,ne ,nb :ne ,  :  )) / dh(1)  &
+                         - 0.5d+00 * (pdata%q(ibx,ne ,nbu:neu,  :  )           &
+                                    - pdata%q(ibx,ne ,nbl:nel,  :  )) / dh(2)
+
+! diffusion of magnetic energy through the upper X boundary
+!
+              inarr(26) = inarr(26)                                            &
+                        - sum(tmp(1,:,:) * pdata%q(ibz,ne,nb:ne,  :  )         &
+                            - tmp(2,:,:) * pdata%q(iby,ne,nb:ne,  :  )) * dyz
+#endif /* NDIMS == 3 */
+
+            end if ! resistivity
+
+          end if ! xmax
+
+        end if ! not periodic in X
+
+! fluxes across the Y boundaries
+!
 ! lower Y-boundary
 !
         if (pdata%meta%ymin <= ymin + dh(2)) then
@@ -733,60 +886,86 @@ module integrals
                                          pdata%q(ibx,nb:ne,nbl:nb,  :  ))) * dxz
 #endif /* NDIMS == 3 */
 
-! diffusion along Y
+! mean magnetic energy at the lower Y boundary
 !
+#if NDIMS == 3
+          inarr(22) = inarr(22) + sum(pdata%q(ibx:ibz,nb:ne,nb,nb:ne)**2) * dxz
+#else /* NDIMS == 3 */
+          inarr(22) = inarr(22) + sum(pdata%q(ibx:ibz,nb:ne,nb,  :  )**2) * dxz
+#endif /* NDIMS == 3 */
+
+! advection of magnetic energy through the lower Y boundary
+!
+#if NDIMS == 3
+          inarr(24) = inarr(24) + sum((pdata%q(ibx,nb:ne,nbl:nb,nb:ne)**2      &
+                                     + pdata%q(ibz,nb:ne,nbl:nb,nb:ne)**2)     &
+                                     * pdata%q(ivy,nb:ne,nbl:nb,nb:ne)         &
+                                    - (pdata%q(ivx,nb:ne,nbl:nb,nb:ne)         &
+                                     * pdata%q(ibx,nb:ne,nbl:nb,nb:ne)         &
+                                     + pdata%q(ivz,nb:ne,nbl:nb,nb:ne)         &
+                                     * pdata%q(ibz,nb:ne,nbl:nb,nb:ne))        &
+                                     * pdata%q(iby,nb:ne,nbl:nb,nb:ne)) * dxz
+#else /* NDIMS == 3 */
+          inarr(24) = inarr(24) + sum((pdata%q(ibx,nb:ne,nbl:nb,  :  )**2      &
+                                     + pdata%q(ibz,nb:ne,nbl:nb,  :  )**2)     &
+                                     * pdata%q(ivy,nb:ne,nbl:nb,  :  )         &
+                                    - (pdata%q(ivx,nb:ne,nbl:nb,  :  )         &
+                                     * pdata%q(ibx,nb:ne,nbl:nb,  :  )         &
+                                     + pdata%q(ivz,nb:ne,nbl:nb,  :  )         &
+                                     * pdata%q(ibz,nb:ne,nbl:nb,  :  ))        &
+                                     * pdata%q(iby,nb:ne,nbl:nb,  :  )) * dxz
+#endif /* NDIMS == 3 */
+
           if (resistivity > 0.0d+00) then
 
 #if NDIMS == 3
-! current density Z component
+! the Z component of current density
 !
             tmp(:,1,:) = 0.5d+00 * (pdata%q(iby,nbu:neu,nb ,nb:ne)             &
                                  -  pdata%q(iby,nbl:nel,nb ,nb:ne)) / dh(1)    &
                                  - (pdata%q(ibx,nb :ne ,nb ,nb:ne)             &
                                   - pdata%q(ibx,nb :ne ,nbl,nb:ne)) / dh(2)
 
+! the X component of current density
+!
+            tmp(:,2,:) =           (pdata%q(ibz,nb:ne,nb ,nb :ne )             &
+                                 -  pdata%q(ibz,nb:ne,nbl,nb :ne )) / dh(2)    &
+                       - 0.5d+00 * (pdata%q(iby,nb:ne,nb ,nbu:neu)             &
+                                  - pdata%q(iby,nb:ne,nb ,nbl:nel)) / dh(3)
+
             inarr(15) = inarr(15) - resistivity * sum(sign(tmp(:,1,:),         &
-                                          pdata%q(ibx,nb:ne,nb ,nb:ne))) * dxz
+                                          pdata%q(ibx,nb:ne,nb,nb:ne))) * dxz
+
+! diffusion of magnetic energy through the lower Y boundary
+!
+            inarr(27) = inarr(27)                                              &
+                      + sum(tmp(:,1,:) * pdata%q(ibx,nb:ne,nb,nb:ne)           &
+                          - tmp(:,2,:) * pdata%q(ibz,nb:ne,nb,nb:ne)) * dxz
 #else /* NDIMS == 3 */
-! current density Z component
+! the Z component of current density
 !
             tmp(:,1,:) = 0.5d+00 * (pdata%q(iby,nbu:neu,nb ,  :  )             &
                                  -  pdata%q(iby,nbl:nel,nb ,  :  )) / dh(1)    &
                                  - (pdata%q(ibx,nb :ne ,nb ,  :  )             &
                                   - pdata%q(ibx,nb :ne ,nbl,  :  )) / dh(2)
 
+! the X component of current density
+!
+            tmp(:,2,:) =           (pdata%q(ibz,nb:ne,nb ,   :   )             &
+                                 -  pdata%q(ibz,nb:ne,nbl,   :   )) / dh(2)
+
             inarr(15) = inarr(15) - resistivity * sum(sign(tmp(:,1,:),         &
                                           pdata%q(ibx,nb:ne,nb ,  :  ))) * dxz
+
+! diffusion of magnetic energy through the lower Y boundary
+!
+            inarr(27) = inarr(27)                                              &
+                      + sum(tmp(:,1,:) * pdata%q(ibx,nb:ne,nb,  :  )           &
+                          - tmp(:,2,:) * pdata%q(ibz,nb:ne,nb,  :  )) * dxz
 #endif /* NDIMS == 3 */
 
           end if ! resistivity
 
-! mean magnetic energy at boundary
-!
-#if NDIMS == 3
-          inarr(22) = inarr(22)                                                &
-                    + 2.5d-01 * sum((pdata%q(ibx,nb:ne,nb,nb:ne)**2            &
-                                   + pdata%q(ibz,nb:ne,nb,nb:ne)**2)) * dxz
-#else /* NDIMS == 3 */
-          inarr(22) = inarr(22)                                                &
-                    + 2.5d-01 * sum((pdata%q(ibx,nb:ne,nb,  :  )**2            &
-                                   + pdata%q(ibz,nb:ne,nb,  :  )**2)) * dxz
-#endif /* NDIMS == 3 */
-
-! advection of magnetic field along Y
-!
-#if NDIMS == 3
-          inarr(24) = inarr(24)                                                &
-                    + 5.0d-01 * sum((pdata%q(ibx,nb:ne,nbl:nb,nb:ne)**2        &
-                                   + pdata%q(ibz,nb:ne,nbl:nb,nb:ne)**2)       &
-                                   * pdata%q(ivy,nb:ne,nbl:nb,nb:ne)) * dxz
-#else /* NDIMS == 3 */
-          inarr(24) = inarr(24)                                                &
-                    + 5.0d-01 * sum((pdata%q(ibx,nb:ne,nbl:nb,  :  )**2        &
-                                   + pdata%q(ibz,nb:ne,nbl:nb,  :  )**2)       &
-                                   * pdata%q(ivy,nb:ne,nbl:nb,  :  )) * dxz
-#endif /* NDIMS == 3 */
-
         end if ! ymin
 
 ! upper Y-boundary
@@ -829,107 +1008,91 @@ module integrals
                                          pdata%q(ibx,nb:ne,ne:neu,  :  ))) * dxz
 #endif /* NDIMS == 3 */
 
-! diffusion along Y
+! mean magnetic energy at the upper Y boundary
 !
+#if NDIMS == 3
+          inarr(22) = inarr(22) + sum(pdata%q(ibx:ibz,nb:ne,ne,nb:ne)**2) * dxz
+#else /* NDIMS == 3 */
+          inarr(22) = inarr(22) + sum(pdata%q(ibx:ibz,nb:ne,ne,  :  )**2) * dxz
+#endif /* NDIMS == 3 */
+
+! advection of magnetic energy through the upper Y boundary
+!
+#if NDIMS == 3
+          inarr(24) = inarr(24) - sum((pdata%q(ibx,nb:ne,ne:neu,nb:ne)**2      &
+                                     + pdata%q(ibz,nb:ne,ne:neu,nb:ne)**2)     &
+                                     * pdata%q(ivy,nb:ne,ne:neu,nb:ne)         &
+                                    - (pdata%q(ivx,nb:ne,ne:neu,nb:ne)         &
+                                     * pdata%q(ibx,nb:ne,ne:neu,nb:ne)         &
+                                     + pdata%q(ivz,nb:ne,ne:neu,nb:ne)         &
+                                     * pdata%q(ibz,nb:ne,ne:neu,nb:ne))        &
+                                     * pdata%q(iby,nb:ne,ne:neu,nb:ne)) * dxz
+#else /* NDIMS == 3 */
+          inarr(24) = inarr(24) - sum((pdata%q(ibx,nb:ne,ne:neu,  :  )**2      &
+                                     + pdata%q(ibz,nb:ne,ne:neu,  :  )**2)     &
+                                     * pdata%q(ivy,nb:ne,ne:neu,  :  )         &
+                                    - (pdata%q(ivx,nb:ne,ne:neu,  :  )         &
+                                     * pdata%q(ibx,nb:ne,ne:neu,  :  )         &
+                                     + pdata%q(ivz,nb:ne,ne:neu,  :  )         &
+                                     * pdata%q(ibz,nb:ne,ne:neu,  :  ))        &
+                                     * pdata%q(iby,nb:ne,ne:neu,  :  )) * dxz
+#endif /* NDIMS == 3 */
+
           if (resistivity > 0.0d+00) then
 
 #if NDIMS == 3
-! current density Z component
+! the Z component of current density
 !
             tmp(:,1,:) = 0.5d+00 * (pdata%q(iby,nbu:neu,ne ,nb:ne)             &
                                  -  pdata%q(iby,nbl:nel,ne ,nb:ne)) / dh(1)    &
                                  - (pdata%q(ibx,nb :ne ,neu,nb:ne)             &
                                   - pdata%q(ibx,nb :ne ,ne ,nb:ne)) / dh(2)
 
+! the X component of current density
+
+            tmp(:,2,:) = 0.5d+00 * (pdata%q(ibx,nb :ne ,ne,nbu:neu)            &
+                                 -  pdata%q(ibx,nb :ne ,ne,nbl:nel)) / dh(3)   &
+                       - 0.5d+00 * (pdata%q(ibz,nbu:neu,ne,nb :ne )            &
+                                  - pdata%q(ibz,nbl:nel,ne,nb :ne )) / dh(1)
+
             inarr(15) = inarr(15) + resistivity * sum(sign(tmp(:,1,:),         &
                                     pdata%q(ibx,nb:ne,ne,nb:ne))) * dxz
+
+! diffusion of magnetic energy through the upper Y boundary
+!
+            inarr(27) = inarr(27)                                              &
+                      - sum(tmp(:,1,:) * pdata%q(ibx,nb:ne,ne,nb:ne)           &
+                          - tmp(:,2,:) * pdata%q(ibz,nb:ne,ne,nb:ne)) * dxz
 #else /* NDIMS == 3 */
-! current density Z component
+! the Z component of current density
 !
             tmp(:,1,:) = 0.5d+00 * (pdata%q(iby,nbu:neu,ne ,  :  )             &
                                  -  pdata%q(iby,nbl:nel,ne ,  :  )) / dh(1)    &
                                  - (pdata%q(ibx,nb :ne ,neu,  :  )             &
                                   - pdata%q(ibx,nb :ne ,ne ,  :  )) / dh(2)
 
+! the X component of current density
+!
+            tmp(:,2,:) = 0.5d+00 * (pdata%q(ibz,nbl:nel,ne,  :  )              &
+                                  - pdata%q(ibz,nbu:neu,ne,  :  )) / dh(1)
+
             inarr(15) = inarr(15) + resistivity * sum(sign(tmp(:,1,:),         &
                                     pdata%q(ibx,nb:ne,ne,  :  ))) * dxz
+
+! diffusion of magnetic energy through the upper Y boundary
+!
+            inarr(27) = inarr(27)                                              &
+                      - sum(tmp(:,1,:) * pdata%q(ibx,nb:ne,ne,  :  )           &
+                          - tmp(:,2,:) * pdata%q(ibz,nb:ne,ne,  :  )) * dxz
 #endif /* NDIMS == 3 */
 
           end if ! resistivity
 
-! mean magnetic energy at boundary
-!
-#if NDIMS == 3
-          inarr(22) = inarr(22)                                                &
-                    + 2.5d-01 * sum((pdata%q(ibx,nb:ne,ne,nb:ne)**2            &
-                                   + pdata%q(ibz,nb:ne,ne,nb:ne)**2)) * dxz
-#else /* NDIMS == 3 */
-          inarr(22) = inarr(22)                                                &
-                    + 2.5d-01 * sum((pdata%q(ibx,nb:ne,ne,  :  )**2            &
-                                   + pdata%q(ibz,nb:ne,ne,  :  )**2)) * dxz
-#endif /* NDIMS == 3 */
-
-! advection of magnetic field along Y
-!
-#if NDIMS == 3
-          inarr(24) = inarr(24)                                                &
-                    - 5.0d-01 * sum((pdata%q(ibx,nb:ne,ne:neu,nb:ne)**2        &
-                                   + pdata%q(ibz,nb:ne,ne:neu,nb:ne)**2)       &
-                                   * pdata%q(ivy,nb:ne,ne:neu,nb:ne)) * dxz
-#else /* NDIMS == 3 */
-          inarr(24) = inarr(24)                                                &
-                    - 5.0d-01 * sum((pdata%q(ibx,nb:ne,ne:neu,  :  )**2        &
-                                   + pdata%q(ibz,nb:ne,ne:neu,  :  )**2)       &
-                                   * pdata%q(ivy,nb:ne,ne:neu,  :  )) * dxz
-#endif /* NDIMS == 3 */
-
         end if ! ymax
 
-        if (.not. periodic(1)) then
-
-! lower X-boundary
-!
-          if (pdata%meta%xmin <= xmin + dh(1)) then
-
-! advection of magnetic field along X
-!
 #if NDIMS == 3
-            inarr(23) = inarr(23)                                              &
-                      + 5.0d-01 * sum((pdata%q(iby,nbl:nb,nb:ne,nb:ne)**2      &
-                                     + pdata%q(ibz,nbl:nb,nb:ne,nb:ne)**2)     &
-                                     * pdata%q(ivx,nbl:nb,nb:ne,nb:ne)) * dyz
-#else /* NDIMS == 3 */
-            inarr(23) = inarr(23)                                              &
-                      + 5.0d-01 * sum((pdata%q(iby,nbl:nb,nb:ne,  :  )**2      &
-                                     + pdata%q(ibz,nbl:nb,nb:ne,  :  )**2)     &
-                                     * pdata%q(ivx,nbl:nb,nb:ne,  :  )) * dyz
-#endif /* NDIMS == 3 */
-
-          end if ! xmin
-
-! upper X-boundary
+! fluxes across the Z boundaries
 !
-          if (pdata%meta%xmax >= xmax - dh(1)) then
-
-! advection of magnetic field along X
-!
-#if NDIMS == 3
-            inarr(23) = inarr(23)                                              &
-                      - 5.0d-01 * sum((pdata%q(iby,ne:neu,nb:ne,nb:ne)**2      &
-                                     + pdata%q(ibz,ne:neu,nb:ne,nb:ne)**2)     &
-                                     * pdata%q(ivx,ne:neu,nb:ne,nb:ne)) * dyz
-#else /* NDIMS == 3 */
-            inarr(23) = inarr(23)                                              &
-                      - 5.0d-01 * sum((pdata%q(iby,ne:neu,nb:ne,  :  )**2      &
-                                     + pdata%q(ibz,ne:neu,nb:ne,  :  )**2)     &
-                                     * pdata%q(ivx,ne:neu,nb:ne,  :  )) * dyz
-#endif /* NDIMS == 3 */
-
-          end if ! xmax
-
-        end if ! not periodic in X
-
-#if NDIMS == 3
         if (.not. periodic(3)) then
 
 ! lower Z-boundary
@@ -949,28 +1112,43 @@ module integrals
                                        * pdata%q(ivx,nb:ne,nb:ne,nbl:nb),      &
                                          pdata%q(ibx,nb:ne,nb:ne,nbl:nb))) * dxy
 
-! diffusion along Z
+! advection of magnetic energy through the lower Z boundary
 !
+            inarr(25) = inarr(25) + sum((pdata%q(ibx,nb:ne,nb:ne,nbl:nb)**2    &
+                                       + pdata%q(iby,nb:ne,nb:ne,nbl:nb)**2)   &
+                                       * pdata%q(ivz,nb:ne,nb:ne,nbl:nb)       &
+                                      - (pdata%q(ivx,nb:ne,nb:ne,nbl:nb)       &
+                                       * pdata%q(ibx,nb:ne,nb:ne,nbl:nb)       &
+                                       + pdata%q(ivy,nb:ne,nb:ne,nbl:nb)       &
+                                       * pdata%q(iby,nb:ne,nb:ne,nbl:nb))      &
+                                       * pdata%q(ibz,nb:ne,nb:ne,nbl:nb)) * dxy
+
             if (resistivity > 0.0d+00) then
 
-! current density Y component
+! the X component of current density
 !
-              tmp(:,:,1) = 0.5d+00 * (pdata%q(ibz,nbu:neu,nb:ne,nb )           &
-                                   -  pdata%q(ibz,nbl:nel,nb:ne,nb )) / dh(1)  &
-                                   - (pdata%q(ibx,nb :ne ,nb:ne,nb )           &
-                                    - pdata%q(ibx,nb :ne ,nb:ne,nbl)) / dh(3)
+              tmp(:,:,1) = 0.5d+00 * (pdata%q(ibz,nb:ne,nbu:neu,nb )           &
+                                   -  pdata%q(ibz,nb:ne,nbl:nel,nb )) / dh(2)  &
+                                   - (pdata%q(iby,nb:ne,nb :ne ,nb )           &
+                                    - pdata%q(iby,nb:ne,nb :ne ,nbl)) / dh(3)
 
-              inarr(18) = inarr(18) + resistivity * sum(sign(tmp(:,:,1),       &
+! the Y component of current density
+!
+              tmp(:,:,2) =           (pdata%q(ibx,nb :ne ,nb:ne,nb )           &
+                                   -  pdata%q(ibx,nb :ne ,nb:ne,nbl)) / dh(3)  &
+                         - 0.5d+00 * (pdata%q(ibz,nbu:neu,nb:ne,nb )           &
+                                    - pdata%q(ibz,nbl:nel,nb:ne,nb )) / dh(1)
+
+              inarr(18) = inarr(18) - resistivity * sum(sign(tmp(:,:,2),       &
                                       pdata%q(ibx,nb:ne,nb:ne,nb))) * dxy
 
-            end if ! resistivity
-
-! advection of magnetic field along Z
+! diffusion of magnetic energy through the lower Z boundary
 !
-            inarr(25) = inarr(25)                                              &
-                    + 0.5d+00 * sum((pdata%q(ibx,nb:ne,nb:ne,nbl:nb)**2        &
-                                   + pdata%q(iby,nb:ne,nb:ne,nbl:nb)**2)       &
-                                   * pdata%q(ivz,nb:ne,nb:ne,nbl:nb)) * dxy
+            inarr(28) = inarr(28)                                              &
+                      + sum(tmp(:,:,1) * pdata%q(iby,nb:ne,nb:ne,nb)           &
+                          - tmp(:,:,2) * pdata%q(ibx,nb:ne,nb:ne,nb)) * dxy
+
+            end if ! resistivity
 
           end if ! zmin
 
@@ -991,28 +1169,43 @@ module integrals
                                        * pdata%q(ivx,nb:ne,nb:ne,ne:neu),      &
                                          pdata%q(ibx,nb:ne,nb:ne,ne:neu))) * dxy
 
-! diffusion along Z
+! advection of magnetic energy through the upper Z boundary
 !
+            inarr(25) = inarr(25) + sum((pdata%q(ibx,nb:ne,nb:ne,ne:neu)**2    &
+                                       + pdata%q(iby,nb:ne,nb:ne,ne:neu)**2)   &
+                                       * pdata%q(ivz,nb:ne,nb:ne,ne:neu)       &
+                                      - (pdata%q(ivx,nb:ne,nb:ne,ne:neu)       &
+                                       * pdata%q(ibx,nb:ne,nb:ne,ne:neu)       &
+                                       + pdata%q(ivy,nb:ne,nb:ne,ne:neu)       &
+                                       * pdata%q(iby,nb:ne,nb:ne,ne:neu))      &
+                                       * pdata%q(ibz,nb:ne,nb:ne,ne:neu)) * dxy
+
             if (resistivity > 0.0d+00) then
 
-! current density Y component
+! the X component of current density
 !
-              tmp(:,:,1) = 0.5d+00 * (pdata%q(ibz,nbu:neu,nb:ne,ne )           &
-                                   -  pdata%q(ibz,nbl:nel,nb:ne,ne )) / dh(1)  &
-                                   - (pdata%q(ibx,nb :ne ,nb:ne,neu)           &
-                                    - pdata%q(ibx,nb :ne ,nb:ne,ne )) / dh(3)
+              tmp(:,:,1) = 0.5d+00 * (pdata%q(ibz,nb:ne,nbu:neu,ne )           &
+                                   -  pdata%q(ibz,nb:ne,nbl:nel,ne )) / dh(2)  &
+                                   - (pdata%q(iby,nb:ne,nb :ne ,neu )           &
+                                    - pdata%q(iby,nb:ne,nb :ne ,ne )) / dh(3)
 
-              inarr(18) = inarr(18) - resistivity * sum(sign(tmp(:,:,1),       &
+! the Y component of current density
+!
+              tmp(:,:,2) =           (pdata%q(ibx,nb :ne ,nb:ne,neu)           &
+                                   -  pdata%q(ibx,nb :ne ,nb:ne,ne )) / dh(3)  &
+                         - 0.5d+00 * (pdata%q(ibz,nbu:neu,nb:ne,ne )           &
+                                    - pdata%q(ibz,nbl:nel,nb:ne,ne )) / dh(1)
+
+              inarr(18) = inarr(18) + resistivity * sum(sign(tmp(:,:,1),       &
                                       pdata%q(ibx,nb:ne,nb:ne,ne))) * dxy
 
-            end if ! resistivity
-
-! advection of magnetic field along Z
+! diffusion of magnetic energy through the upper Z boundary
 !
-            inarr(25) = inarr(25)                                              &
-                    - 0.5d+00 * sum((pdata%q(ibx,nb:ne,nb:ne,ne:neu)**2        &
-                                   + pdata%q(iby,nb:ne,nb:ne,ne:neu)**2)       &
-                                   * pdata%q(ivz,nb:ne,nb:ne,ne:neu)) * dxy
+            inarr(28) = inarr(28)                                              &
+                      - sum(tmp(:,:,1) * pdata%q(iby,nb:ne,nb:ne,ne)           &
+                          - tmp(:,:,2) * pdata%q(ibx,nb:ne,nb:ne,ne)) * dxy
+
+            end if ! resistivity
 
           end if ! zmax
 
@@ -1064,6 +1257,13 @@ module integrals
 !
     avarr(:) = avarr(:) * voli
 
+! apply factors to the reconnection rate terms
+!
+    inarr(12)    = inarr(12) / yarea
+    inarr(22)    = 2.5d-01 * inarr(22) / yarea
+    inarr(23:25) = 5.0d-01 * inarr(23:25)
+    inarr(26:28) = resistivity * inarr(26:28)
+
 ! write down the integrals and statistics to appropriate files
 !
     if (stored) then
@@ -1077,7 +1277,7 @@ module integrals
                                             , avarr(6), mnarr(6), mxarr(6)     &
                                             , avarr(7), mnarr(7), mxarr(7)
       write(eunit,efmt) step, time, dtn, dte, maxval(errors(:)), errors(:)
-      write(runit,"(i9, 16es25.15e3)") step, time, inarr(11:25)
+      write(runit,"(i9, 19es25.15e3)") step, time, inarr(11:28)
 
       call flush_and_sync(funit)
       call flush_and_sync(sunit)