From 37d81a529818f6ea0b3e3362b68cd21f0bd12c16 Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauldmccarthy@gmail.com>
Date: Fri, 6 Sep 2024 15:20:50 +0100
Subject: [PATCH] BF: Fix bug in code controlling which adjacent spline
 coefficients to use when interpolating

---
 splinterpolator.h | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/splinterpolator.h b/splinterpolator.h
index 5cb2cd4..9c367c3 100644
--- a/splinterpolator.h
+++ b/splinterpolator.h
@@ -759,18 +759,10 @@ unsigned int Splinterpolator<T>::get_start_indicies(const double *coord, int *si
 {
   unsigned int ni = _order+1;
 
-  if (odd(ni)) {
-    for (unsigned int i=0; i<_ndim; i++) {
-      sinds[i] = static_cast<int>(coord[i]+0.5) - ni/2;
-    }
-  }
-  else {
-    for (unsigned int i=0; i<_ndim; i++) {
-      int ix = static_cast<int>(coord[i]+0.5);
-      if (ix < coord[i]) sinds[i] = ix - (ni-1)/2;
-      else sinds[i] = ix -ni/2;
-    }
+  for (unsigned int i=0; i<_ndim; i++) {
+    sinds[i] = std::ceil(coord[i]) - ni/2;
   }
+
   for (unsigned int i=_ndim; i<5; i++) sinds[i] = 0;
 
   return(ni);
-- 
GitLab