diff --git a/+af_tools/findstall.m b/+af_tools/findstall.m
index 7bfc8b76ca315e3c3d97b9ae36c93c1701e28633..cf1b8b17dbb6968e974665dd448623748d0801f5 100644
--- a/+af_tools/findstall.m
+++ b/+af_tools/findstall.m
@@ -1,6 +1,7 @@
 function [alpha_s, c_l_s, c_d_s] = findstall(varargin)
     % FINDSTALL Finds the stall point and returns the corresponding AOA, CL and CD.
-    %   This function uses Matlab's findpeak in order to determine the position of the stall point.
+    %   This function looks for the highest local maximm in the CL curve to determine the position
+    %   of the stall point.
     %
     %   FINDSTALL accepts inputs in the form of a Polar structure (generated with XF2MAT) or values
     %   for angles of attack and their associated cl and cd. While alpha and cl are required for
@@ -99,22 +100,11 @@ function [alpha_s, c_l_s, c_d_s] = stallfinder(alpha, c_l, c_d)
     % Loop for every polar data (every column of cl)
     for i = 1:size(c_l, 2)
 
-        % Find stall for each polar using findpeaks
-        maxFound = false;
-        minWidth = 0;
-
-        % Iterate in order to find only one peak (largest one should indicate the stall)
-        while ~maxFound && minWidth <= length(alpha(:, i))
-            [~, locs] = findpeaks(c_l(:, i), 'MinPeakWidth', minWidth);
-            if numel(locs) == 1
-                maxFound = true;
-            else
-                minWidth = minWidth + 1;
-            end
-        end
+        % Find all local maxima in c_l, then assume the highest one is the stall point
+        locMax = islocalmax(c_l(:, i));
+        [~, absMaxIdx] = max(locMax);
 
-        if ~maxFound
-            % If findpeaks does not work
+        if ~any(locMax)
             if PLOT_POLAR_IF_ERROR
                 figure('Name', 'Debug: Polar with no stall');
                 plot(rad2deg(alpha(:, i)), c_l(:, i));
@@ -124,15 +114,15 @@ function [alpha_s, c_l_s, c_d_s] = stallfinder(alpha, c_l, c_d)
                 grid on;
             end
             error('MATLAB:findstall:noStallFound', ...
-                  ['findpeaks did not found any stall point the polar. '...
+                  ['The stall point could not be determined as no local maximum was detected. '...
                    'Please provide a polar that goes a bit after the stall.\n' ...
                    'See the attached plot for more details']);
         end
 
-        alpha_s(i) = alpha(locs, i);
-        c_l_s(i) = c_l(locs, i);
+        alpha_s(i) = alpha(absMaxIdx, i);
+        c_l_s(i) = c_l(absMaxIdx, i);
         if ~isempty(c_d)
-            c_d_s(i) = c_d(locs, i);
+            c_d_s(i) = c_d(absMaxIdx, i);
         end
 
     end
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 525fd08d71aed9f2185f4d4acc27e2bee97b1f83..49853b626486f8d38d953980799681adebfafff8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
+## [4.2.0] - 2023-12-14
+
+### Changed
+
+- **findstall**: use `islocalmax` rather than `findpeaks` to find stall point.
+
 ## [4.1.0] - 2022-11-25
 
 ### Added
@@ -127,7 +133,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 - Initial release
 
-[Unreleased]: https://gitlab.uliege.be/am-dept/matlab_airfoil_toolbox/-/compare/v4.1.0...master
+[Unreleased]: https://gitlab.uliege.be/am-dept/matlab_airfoil_toolbox/-/compare/v4.2.0...master
+[4.2.0]: https://gitlab.uliege.be/am-dept/matlab_airfoil_toolbox/-/compare/4.1.0...v4.2.0
 [4.1.0]: https://gitlab.uliege.be/am-dept/matlab_airfoil_toolbox/-/compare/4.0.0...v4.1.0
 [4.0.0]: https://gitlab.uliege.be/am-dept/matlab_airfoil_toolbox/-/compare/3.0.0...4.0.0
 [3.0.0]: https://gitlab.uliege.be/am-dept/matlab_airfoil_toolbox/-/compare/v2.0.1...v3.0.0