diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/log.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/log.hpp
index bbaae7985364c4a2a950a4ca3a4090a4f39d9be4..13c040d5068a2294d7ed28074bfce3f3aef4586c 100644
--- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/log.hpp
+++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/log.hpp
@@ -220,7 +220,8 @@ public:
     inline std::string expr(const double* params, const int depth=1) const
     {
         return fmt::format(
-            "(ln({}{:+11.6e}))",
+            "(ln({:.1f}*{}{:+11.6e}))",
+            params[0],
             (depth < nlopt_wrapper::MAX_PARAM_DEPTH ? _feats[0]->expr(params + 2, depth + 1) : _feats[0]->expr()),
             params[1]
         );
@@ -236,7 +237,8 @@ public:
     inline std::string get_latex_expr(const double* params, const int depth=1) const
     {
         return fmt::format(
-            "\\left(\\ln{{ \\left({}{:+8.3e} \\right)}}\\right)",
+            "\\lef:3.\\ln{{ \\left({:.1f}{}{:+8.3e} \\right)}}\\right)",
+            params[0],
             (depth < nlopt_wrapper::MAX_PARAM_DEPTH ? _feats[0]->get_latex_expr(params + 2, depth + 1) : _feats[0]->get_latex_expr()),
             params[1]
         );
@@ -252,7 +254,8 @@ public:
     inline std::string matlab_fxn_expr(const double* params, const int depth=1) const
     {
         return fmt::format(
-            "log({}{:+11.6e})",
+            "log({:.1f}*{}{:+11.6e})",
+            params[0],
             (depth < nlopt_wrapper::MAX_PARAM_DEPTH ? _feats[0]->matlab_fxn_expr(params + 2, depth + 1) : _feats[0]->matlab_fxn_expr()),
             params[1]
         );
diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/parameterized_log.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/parameterized_log.cpp
index b3deff63490e3f00f49f596d1a82aa700e5f545b..11deaf1857d73a42da87d4eb58f775d8fc3febaf 100644
--- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/parameterized_log.cpp
+++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/parameterized_log.cpp
@@ -247,7 +247,6 @@ void LogNode::initialize_params(double* params, const int depth) const
 
 void LogParamNode::set_bounds(double* lb, double* ub, const int depth) const
 {
-    // The parameters of logarithm are dependent on the external shift/scale parameters, but physically relevant
     lb[0] = _sign_alpha;
     ub[0] = _sign_alpha;
 
@@ -267,13 +266,23 @@ void LogParamNode::initialize_params(double* params, const int depth) const
     if(depth >= nlopt_wrapper::MAX_PARAM_DEPTH)
     {
         val_ptr = _feats[0]->value_ptr();
-        params[1] = std::max(0.0, -1.0 * _sign_alpha * (*std::min_element(val_ptr, val_ptr + _n_samp, [this](double x1, double x2){return x1 * _sign_alpha < x2 * _sign_alpha;})) + 1e-10);
+        params[1] = std::max(
+            0.0,
+            1e-10 - 1.0 * _sign_alpha * (
+                *std::min_element(val_ptr, val_ptr + _n_samp, [params](double v1, double v2){return params[0] * v1 < params[0] * v2;})
+            )
+        );
         return;
     }
     _feats[0]->initialize_params(params + 2, depth + 1);
 
     val_ptr = _feats[0]->value_ptr(params + 2);
-    params[1] = std::max(0.0, -1.0 * _sign_alpha * (*std::min_element(val_ptr, val_ptr + _n_samp, [this](double x1, double x2){return x1 * _sign_alpha < x2 * _sign_alpha;})) + 1e-10);
+    params[1] = std::max(
+        0.0,
+        1e-10 - 1.0 * _sign_alpha * (
+            *std::min_element(val_ptr, val_ptr + _n_samp, [params](double v1, double v2){return params[0] * v1 < params[0] * v2;})
+        )
+    );
 }
 
 void LogParamNode::update_postfix(std::string& cur_expr, const bool add_params) const