diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
index 7851841a7486b3ea0f4ecdc775a86385dae995a5..a87342c6fe1e78e9b4ec9f02110c6977260cfd93 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
@@ -233,7 +233,7 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
 
     if (mag(htc) < ROOTVSMALL && !td.cloud().radiation())
     {
-        return  T + dt*Sh/(this->volume(d)*rho*cp);
+        return max(T + dt*Sh/(this->volume(d)*rho*cp), td.constProps().TMin());
     }
 
     const scalar As = this->areaS(d);
@@ -256,9 +256,11 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
     IntegrationScheme<scalar>::integrationResult Tres =
         td.cloud().TIntegrator().integrate(T, dt, ap, bp);
 
-    dhsTrans += dt*htc*As*(Tres.average() - Tc_);
+    scalar Tnew = max(Tres.value(), td.constProps().TMin());
 
-    return Tres.value();
+    dhsTrans += dt*htc*As*(0.5*(T + Tnew) - Tc_);
+
+    return Tnew;
 }