diff --git a/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp b/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp
index 24fca9910801367896f1abaf08f915107b9ab5a9..c53a997b969f40c905d41e286485f482347e009c 100644
--- a/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp
+++ b/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp
@@ -284,22 +284,27 @@ geom2::Point_3 Wing::calculate_wing_position() {
   const double fuselage_maximum_width = geom2::measure::width_max(data->fuselage);
   const double fuselage_maximum_height = geom2::measure::height_max(data->fuselage);
 
-  double fuselage_upper_z;
-  double fuselage_lower_z;
+  /* Set fuselage upper and lower z to the center of the fuselage */
+  double fuselage_upper_z = data->fuselage.origin.z();
+  double fuselage_lower_z = data->fuselage.origin.z();
 
   /* Keel beam height as fraction of fuselage height*/
   double keel_beam_height = 0.005 * fuselage_maximum_height;  // Assumed 0.5% of fuselage height
 
   /* Define wing position limits */
   if (data->specification_wing_mounting.value() == "low") {
-    fuselage_upper_z = data->fuselage.origin.z();
+    /* Limit to lower fuselage half*/
     fuselage_lower_z = data->fuselage.origin.z() - fuselage_maximum_height * 0.5;
     keel_beam_height = 0.005 * (fuselage_upper_z - fuselage_lower_z);
     z_limits = {fuselage_lower_z + keel_beam_height, fuselage_upper_z};
   } else if (data->specification_wing_mounting.value() == "high") {
+    /* Limit to upper fuselage half*/
+    fuselage_upper_z += fuselage_maximum_height * 0.5;
+    keel_beam_height = 0.005 * (fuselage_upper_z - fuselage_lower_z);
     z_limits = {fuselage_lower_z, fuselage_upper_z - keel_beam_height};
   } else {
-    z_limits = {fuselage_lower_z, fuselage_upper_z};
+    /* Allow variation between +- 10% of overall fuselage max height */
+    z_limits = {fuselage_lower_z - 0.10 * fuselage_maximum_height, fuselage_upper_z + 0.10 * fuselage_maximum_height};
   }
 
   // Assume center position