From d405b91787ecb332d4ecb8740c06ca84f7e8a6b3 Mon Sep 17 00:00:00 2001
From: Stanislaw Halik <sthalik@misaki.pl>
Date: Thu, 15 Jun 2017 10:18:47 +0200
Subject: spline: workaround going over the max value

---
 spline/spline.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

(limited to 'spline')

diff --git a/spline/spline.cpp b/spline/spline.cpp
index 1fb38014..624ab883 100644
--- a/spline/spline.cpp
+++ b/spline/spline.cpp
@@ -146,8 +146,11 @@ float spline::get_value_internal(int x)
 
     const float sign = signum(x);
     x = std::abs(x);
-    const float ret = data[std::min(unsigned(x), unsigned(value_count)-1u)];
-    return sign * std::fmax(0, ret);
+    const float ret_ = data[std::min(unsigned(x), unsigned(value_count)-1u)];
+    float ret = sign * std::fmax(0, ret_);
+    if (max_y > 0)
+        ret = fmin(max_y, ret);
+    return ret;
 }
 
 void spline::add_lone_point()
-- 
cgit v1.2.3