diff --git a/src/mhd/DirectInduction/mhd.h b/src/mhd/DirectInduction/mhd.h
index df5e9ed867616f778325c9238c7725e83a787d68..6b16f6b4eea79b0da73812c822c8ef5b47c547ce 100644
--- a/src/mhd/DirectInduction/mhd.h
+++ b/src/mhd/DirectInduction/mhd.h
@@ -382,6 +382,8 @@ __attribute__((always_inline)) INLINE static void mhd_prepare_force(
 
   const float h = p->h;
   const float rho = p->rho;
+  const float P = p->force.pressure;
+  
   float B[3];
   B[0] = p->mhd_data.B_over_rho[0] * rho;
   B[1] = p->mhd_data.B_over_rho[1] * rho;
@@ -401,6 +403,12 @@ __attribute__((always_inline)) INLINE static void mhd_prepare_force(
 
   p->mhd_data.alpha_AR =
       normB ? fminf(1.0f, h * sqrtf(grad_B_mean_square) / normB) : 0.0f;
+
+  const float plasma_beta = B2 != 0.0f ? 2.0f * mu_0 * P / B2 : FLT_MAX;
+  const float scale = 0.125f * (10.0f - plasma_beta);
+  const float tensile_correction_scale = fmaxf(0.0f, fminf(scale, 1.0f));
+  
+  p->mhd_data.TIC_beta = p->mhd_data.monopole_beta * ensile_correction_scale;
 }
 
 /**
diff --git a/src/mhd/DirectInduction/mhd_iact.h b/src/mhd/DirectInduction/mhd_iact.h
index 0af0d5538428fa87337de3248bf179993e2307d9..e325f7f022808489dcf37192f8c3001c466c04c6 100644
--- a/src/mhd/DirectInduction/mhd_iact.h
+++ b/src/mhd/DirectInduction/mhd_iact.h
@@ -298,8 +298,6 @@ __attribute__((always_inline)) INLINE static void runner_iact_mhd_force(
   /* Recover some data */
   const float mi = pi->mass;
   const float mj = pj->mass;
-  const float Pi = pi->force.pressure;
-  const float Pj = pj->force.pressure;
   const float rhoi = pi->rho;
   const float rhoj = pj->rho;
 
@@ -429,46 +427,39 @@ __attribute__((always_inline)) INLINE static void runner_iact_mhd_force(
   /* Manifestly *NOT* symmetric in i <-> j */
 
   // const float monopole_beta = hydro_props->mhd.monopole_subtraction;
-  const float monopole_beta = pi->mhd_data.monopole_beta;
 
-  const float plasma_beta_i = B2i != 0.0f ? 2.0f * mu_0 * Pi / B2i : FLT_MAX;
-  const float plasma_beta_j = B2j != 0.0f ? 2.0f * mu_0 * Pj / B2j : FLT_MAX;
+  const float TIC_beta_i = pi->mhd_data.TIC_beta;
+  const float TIC_beta_j = pj->mhd_data.TIC_beta;
 
-  const float scale_i = 0.125f * (10.0f - plasma_beta_i);
-  const float scale_j = 0.125f * (10.0f - plasma_beta_j);
+  sph_acc_term_i[0] += TIC_beta_i * over_rho2_i * wi_dr * permeability_inv *
+                       Bri * r_inv * Bi[0];
+  sph_acc_term_i[0] += TIC_beta_i * over_rho2_j * wj_dr * permeability_inv *
+                       Brj * r_inv * Bi[0];
 
-  const float tensile_correction_scale_i = fmaxf(0.0f, fminf(scale_i, 1.0f));
-  const float tensile_correction_scale_j = fmaxf(0.0f, fminf(scale_j, 1.0f));
+  sph_acc_term_i[1] += TIC_beta_i * over_rho2_i * wi_dr * permeability_inv *
+                       Bri * r_inv * Bi[1];
+  sph_acc_term_i[1] += TIC_beta_i * over_rho2_j * wj_dr * permeability_inv *
+                       Brj * r_inv * Bi[1];
 
-  sph_acc_term_i[0] += monopole_beta * over_rho2_i * wi_dr * permeability_inv *
-                       Bri * r_inv * Bi[0] * tensile_correction_scale_i;
-  sph_acc_term_i[0] += monopole_beta * over_rho2_j * wj_dr * permeability_inv *
-                       Brj * r_inv * Bi[0] * tensile_correction_scale_i;
+  sph_acc_term_i[2] += TIC_beta_i * over_rho2_i * wi_dr * permeability_inv *
+                       Bri * r_inv * Bi[2];
+  sph_acc_term_i[2] += TIC_beta_i * over_rho2_j * wj_dr * permeability_inv *
+                       Brj * r_inv * Bi[2];
 
-  sph_acc_term_i[1] += monopole_beta * over_rho2_i * wi_dr * permeability_inv *
-                       Bri * r_inv * Bi[1] * tensile_correction_scale_i;
-  sph_acc_term_i[1] += monopole_beta * over_rho2_j * wj_dr * permeability_inv *
-                       Brj * r_inv * Bi[1] * tensile_correction_scale_i;
+  sph_acc_term_j[0] -= TIC_beta_j * over_rho2_i * wi_dr * permeability_inv *
+                       Bri * r_inv * Bj[0];
+  sph_acc_term_j[0] -= TIC_beta_j * over_rho2_j * wj_dr * permeability_inv *
+                       Brj * r_inv * Bj[0];
 
-  sph_acc_term_i[2] += monopole_beta * over_rho2_i * wi_dr * permeability_inv *
-                       Bri * r_inv * Bi[2] * tensile_correction_scale_i;
-  sph_acc_term_i[2] += monopole_beta * over_rho2_j * wj_dr * permeability_inv *
-                       Brj * r_inv * Bi[2] * tensile_correction_scale_i;
+  sph_acc_term_j[1] -= TIC_beta_j * over_rho2_i * wi_dr * permeability_inv *
+                       Bri * r_inv * Bj[1];
+  sph_acc_term_j[1] -= TIC_beta_j * over_rho2_j * wj_dr * permeability_inv *
+                       Brj * r_inv * Bj[1];
 
-  sph_acc_term_j[0] -= monopole_beta * over_rho2_i * wi_dr * permeability_inv *
-                       Bri * r_inv * Bj[0] * tensile_correction_scale_j;
-  sph_acc_term_j[0] -= monopole_beta * over_rho2_j * wj_dr * permeability_inv *
-                       Brj * r_inv * Bj[0] * tensile_correction_scale_j;
-
-  sph_acc_term_j[1] -= monopole_beta * over_rho2_i * wi_dr * permeability_inv *
-                       Bri * r_inv * Bj[1] * tensile_correction_scale_j;
-  sph_acc_term_j[1] -= monopole_beta * over_rho2_j * wj_dr * permeability_inv *
-                       Brj * r_inv * Bj[1] * tensile_correction_scale_j;
-
-  sph_acc_term_j[2] -= monopole_beta * over_rho2_i * wi_dr * permeability_inv *
-                       Bri * r_inv * Bj[2] * tensile_correction_scale_j;
-  sph_acc_term_j[2] -= monopole_beta * over_rho2_j * wj_dr * permeability_inv *
-                       Brj * r_inv * Bj[2] * tensile_correction_scale_j;
+  sph_acc_term_j[2] -= TIC_beta_j * over_rho2_i * wi_dr * permeability_inv *
+                       Bri * r_inv * Bj[2];
+  sph_acc_term_j[2] -= TIC_beta_j * over_rho2_j * wj_dr * permeability_inv *
+                       Brj * r_inv * Bj[2];
 
   /* Use the force Luke ! */
   pi->a_hydro[0] -= mj * sph_acc_term_i[0];
@@ -666,7 +657,6 @@ __attribute__((always_inline)) INLINE static void runner_iact_nonsym_mhd_force(
   /* Recover some data */
   const float mi = pi->mass;
   const float mj = pj->mass;
-  const float Pi = pi->force.pressure;
   const float rhoi = pi->rho;
   const float rhoj = pj->rho;
 
@@ -789,26 +779,23 @@ __attribute__((always_inline)) INLINE static void runner_iact_nonsym_mhd_force(
   /* Manifestly *NOT* symmetric in i <-> j */
 
   // const float monopole_beta = hydro_props->mhd.monopole_subtraction;
-  const float monopole_beta = pi->mhd_data.monopole_beta;
-
-  const float plasma_beta_i = B2i != 0.0f ? 2.0f * mu_0 * Pi / B2i : FLT_MAX;
-  const float scale_i = 0.125f * (10.0f - plasma_beta_i);
-  const float tensile_correction_scale_i = fmaxf(0.0f, fminf(scale_i, 1.0f));
-
-  sph_acc_term_i[0] += monopole_beta * over_rho2_i * wi_dr * permeability_inv *
-                       Bri * r_inv * Bi[0] * tensile_correction_scale_i;
-  sph_acc_term_i[0] += monopole_beta * over_rho2_j * wj_dr * permeability_inv *
-                       Brj * r_inv * Bi[0] * tensile_correction_scale_i;
-
-  sph_acc_term_i[1] += monopole_beta * over_rho2_i * wi_dr * permeability_inv *
-                       Bri * r_inv * Bi[1] * tensile_correction_scale_i;
-  sph_acc_term_i[1] += monopole_beta * over_rho2_j * wj_dr * permeability_inv *
-                       Brj * r_inv * Bi[1] * tensile_correction_scale_i;
-
-  sph_acc_term_i[2] += monopole_beta * over_rho2_i * wi_dr * permeability_inv *
-                       Bri * r_inv * Bi[2] * tensile_correction_scale_i;
-  sph_acc_term_i[2] += monopole_beta * over_rho2_j * wj_dr * permeability_inv *
-                       Brj * r_inv * Bi[2] * tensile_correction_scale_i;
+
+  const float TIC_beta_i = pi->mhd_data.TIC_beta;
+
+  sph_acc_term_i[0] += TIC_beta_i * over_rho2_i * wi_dr * permeability_inv *
+                       Bri * r_inv * Bi[0];
+  sph_acc_term_i[0] += TIC_beta_i * over_rho2_j * wj_dr * permeability_inv *
+                       Brj * r_inv * Bi[0];
+
+  sph_acc_term_i[1] += TIC_beta_i * over_rho2_i * wi_dr * permeability_inv *
+                       Bri * r_inv * Bi[1];
+  sph_acc_term_i[1] += TIC_beta_i * over_rho2_j * wj_dr * permeability_inv *
+                       Brj * r_inv * Bi[1];
+
+  sph_acc_term_i[2] += TIC_beta_i * over_rho2_i * wi_dr * permeability_inv *
+                       Bri * r_inv * Bi[2];
+  sph_acc_term_i[2] += TIC_beta_i * over_rho2_j * wj_dr * permeability_inv *
+                       Brj * r_inv * Bi[2];
   /* Use the force Luke ! */
   pi->a_hydro[0] -= mj * sph_acc_term_i[0];
   pi->a_hydro[1] -= mj * sph_acc_term_i[1];
diff --git a/src/mhd/DirectInduction/mhd_io.h b/src/mhd/DirectInduction/mhd_io.h
index 2cef812932b403ce886e37ba7c1f6e0415248ac7..29ad782da5b2b505332160df7e7c94d930be7496 100644
--- a/src/mhd/DirectInduction/mhd_io.h
+++ b/src/mhd/DirectInduction/mhd_io.h
@@ -291,36 +291,40 @@ INLINE static int mhd_write_particles(const struct part* parts,
       "The curl of Magnetic flux densities of the particles");
 
   list[6] = io_make_output_field(
+      "TIC_beta", FLOAT, 1, UNIT_CONV_NO_UNITS, 1.f, parts, mhd_data.TIC_beta,
+      "Tensile instability correction term coupling strength");
+
+  list[7] = io_make_output_field(
       "AlphaAR", FLOAT, 1, UNIT_CONV_NO_UNITS, 1.f, parts, mhd_data.alpha_AR,
       "Artificial resistivity switch of the particles");
 
   /* Error metrics */
-  list[7] = io_make_output_field_convert_part(
+  list[8] = io_make_output_field_convert_part(
       "R0", FLOAT, 1, UNIT_CONV_NO_UNITS, 0, parts, xparts, calculate_R0,
       "Classical error metric, indicates places with large divergence. "
       "Sensetivity to particle noise depends on signal_to_noise parameter, "
       "default is 10 (if 1 - weak noise filtering, if 100 - strong noise "
       "filtering)");
-  list[8] = io_make_output_field_convert_part(
+  list[9] = io_make_output_field_convert_part(
       "R1", FLOAT, 1, UNIT_CONV_NO_UNITS, 0, parts, xparts, calculate_R1,
       "Error metric, angle between B field and total Fmag. Indicates unpysical "
       "magnetic force. Sensetivity to particle noise depends on "
       "signal_to_noise parameter, default is 10 (if 1 - weak noise filtering, "
       "if 100 - strong noise filtering)");
-  list[9] = io_make_output_field_convert_part(
+  list[10] = io_make_output_field_convert_part(
       "R2", FLOAT, 1, UNIT_CONV_NO_UNITS, 0, parts, xparts, calculate_R2,
       "Error metric, ratio of divB and |curlB|. Estimates upper limit on "
       "B_monopole/B_physical. Sensetivity to particle noise depends on "
       "signal_to_noise parameter, default is 10 (if 1 - weak noise filtering, "
       "if 100 - strong noise filtering)");
-  list[10] = io_make_output_field_convert_part(
+  list[11] = io_make_output_field_convert_part(
       "R3", FLOAT, 1, UNIT_CONV_NO_UNITS, 0, parts, xparts, calculate_R3,
       "Error metric, shows relation of smoothing length to characteristic B "
       "gradient scale. Sensetivity to particle noise depends on "
       "signal_to_noise parameter, default is 10 (if 1 - weak noise filtering, "
       "if 100 - strong noise filtering)");
 
-  return 11;
+  return 12;
 }
 
 /**
diff --git a/src/mhd/DirectInduction/mhd_struct.h b/src/mhd/DirectInduction/mhd_struct.h
index 350b4af294d3d9951cd4d7abd5330b5a7c3d1fa7..6dffc5bde2fa292e0346ab9a85330598a43b9721 100644
--- a/src/mhd/DirectInduction/mhd_struct.h
+++ b/src/mhd/DirectInduction/mhd_struct.h
@@ -46,10 +46,13 @@ struct mhd_part_data {
 
   float psi_over_ch_dt;
 
-  /*! Monopole subtraction in Lorentz Force*/
+  /* Monopole subtraction in Lorentz Force */
   float monopole_beta;
 
-  /*! Artifical Diffusion */
+  /* Tensile instability correction coupling strength */ 
+  float TIC_beta;
+
+  /* Artifical Diffusion */
   float art_diff_beta;
 
   /* SPH <1> error */