diff --git a/models/c/general/CFUN_HTS_JcFit_Succi_v1.c b/models/c/general/CFUN_HTS_JcFit_Succi_v2.c
similarity index 89%
rename from models/c/general/CFUN_HTS_JcFit_Succi_v1.c
rename to models/c/general/CFUN_HTS_JcFit_Succi_v2.c
index 19ed0fe27882c30e640b9b219f3458541b468266..f6b65a4ca1c5faabbece2beb313e4621844a07ae 100644
--- a/models/c/general/CFUN_HTS_JcFit_Succi_v1.c
+++ b/models/c/general/CFUN_HTS_JcFit_Succi_v2.c
@@ -60,10 +60,14 @@ EXPORT int eval(const char *func,
                 double *outReal,
                 double *outImag) {
  
- if (nArgs != 2) {
-	// Top_IN, Bnorm_IN, thetaFieldTape_IN
-	error = "CFUN_HTS_JcFit_Succi expects two arguments";
-    return 0;
+    if (nArgs != 2) {
+        error = "CFUN_HTS_JcFit_Succi expects two arguments";
+        return 0;
+    }
+
+    if(strcmp("CFUN_HTS_JcFit_Succi_v2", func) != 0) {
+        error = "Unknown function";
+        return 0;
     }
 	
     // Fit Parameters
@@ -88,10 +92,22 @@ EXPORT int eval(const char *func,
         double Top_IN   = inReal[0][i];	
         double Bnorm_IN = inReal[1][i];
 
-        //Pre-allocation
+        // temperature above Tc0
+        if (Top_IN >= Tc0) {
+            outReal[i] = 0;
+            return 1;
+        }
+
+        double Birr_T_val = Birr_T(Birr, Tc0, Top_IN, birr_pow);
+
+        // B above Birr_T
+        if (Bnorm_IN >= Birr_T_val) {
+            outReal[i] = 0;
+            return 1;
+        }
+
         double Ic0_T_val = Ic0_T(Ic0, Tc0, gamma, Top_IN);
         double B0_T_val = B0_T(B0, Tc0, Top_IN);
-        double Birr_T_val = Birr_T(Birr, Tc0, Top_IN, birr_pow);
 
         double Ic = Ic0_T_val * pow(1 + Bnorm_IN / B0_T_val, -alpha) * pow(1 - Bnorm_IN / Birr_T_val, q);