From fce635f9dd65ed79adcc811631391f673d46cf63 Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauldmccarthy@gmail.com>
Date: Fri, 18 Oct 2024 15:06:48 +0100
Subject: [PATCH] BF: Fix start index selection for even order interpolation

---
 splinterpolator.h | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

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