diff --git a/zUtil_Maths/gtMathsGetPolyhedronVerticesFromPlaneNormals.m b/zUtil_Maths/gtMathsGetPolyhedronVerticesFromPlaneNormals.m
index 4ff4dfe98d01012c8ec32c0eee5930721affdd41..0da20fc6a47f5a6e5eaa6765fd8ec51fde1143bb 100644
--- a/zUtil_Maths/gtMathsGetPolyhedronVerticesFromPlaneNormals.m
+++ b/zUtil_Maths/gtMathsGetPolyhedronVerticesFromPlaneNormals.m
@@ -19,8 +19,9 @@ function verts = gtMathsGetPolyhedronVerticesFromPlaneNormals(pl_normals)
     for ii = 1:num_pls
         [ps, ds_vers] = get_intersecting_lines(ii, pl_normals, pl_normals_vers, pl_normals_norm);
 
-        verts = [verts; ...
-            get_intersection_points(ps, ds_vers, pl_normals_vers, pl_normals_norm)]; %#ok<AGROW>
+        [new_verts, valid] = ...
+            get_intersection_points(ps, ds_vers, pl_normals_vers, pl_normals_norm);
+        verts = [verts; new_verts(valid, :)]; %#ok<AGROW>
     end
 
     validation_norms = pl_normals_norm + eps('single');
@@ -73,7 +74,7 @@ function [ps, ds_vers] = get_intersecting_lines(pl_ii, pl_normals, pl_normals_ve
     end
 end
 
-function points = get_intersection_points(ps, ds_vers, pl_normals_vers, pl_normals_norm)
+function [points, valid] = get_intersection_points(ps, ds_vers, pl_normals_vers, pl_normals_norm)
     num_ps = size(ps, 1);
 
     % this is based on the fact that the intersection with the different planes
@@ -83,6 +84,7 @@ function points = get_intersection_points(ps, ds_vers, pl_normals_vers, pl_norma
     % If they are not valid, we will take care of it later. 
 
     points = zeros(2 * num_ps, 3);
+    valid = false(2 * num_ps, 1);
 
     dot_prods_ds_pls = (ds_vers * pl_normals_vers')';
     not_perpendiculars = abs(dot_prods_ds_pls) > eps('single');
@@ -103,8 +105,13 @@ function points = get_intersection_points(ps, ds_vers, pl_normals_vers, pl_norma
         min_norm = min(ds_norm(dot_prods_d_pls > 0));
         max_norm = max(ds_norm(dot_prods_d_pls < 0));
 
-        points(2*(line_ii-1)+1, :) = p + d_vers * min_norm;
-        points(2*line_ii, :) = p + d_vers * max_norm;
+        if (~isempty(min_norm))
+            points(2*(line_ii-1)+1, :) = p + d_vers * min_norm;
+        end
+        if (~isempty(max_norm))
+            points(2*line_ii, :) = p + d_vers * max_norm;
+        end
+        valid(2*line_ii+(-1:0)) = ~[isempty(min_norm); isempty(max_norm)];
     end
 end