From 589a45c90f18203a91208996c40e14d9d4f1b7ea Mon Sep 17 00:00:00 2001
From: Mattias Andrée <maandree@operamail.com>
Date: Sat, 26 Jul 2014 12:07:25 +0200
Subject: fix solar_prediction bug
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Mattias Andrée <maandree@operamail.com>
---
 src/solar_python.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/solar_python.py b/src/solar_python.py
index 19694d5..76923bf 100644
--- a/src/solar_python.py
+++ b/src/solar_python.py
@@ -528,6 +528,7 @@ def solar_prediction(delta, requested, fun, epsilon = 0.000001, span = 0.01, t =
     @return  :float?              The calculated time point, `None` if none
                                   were found within the specified time span
     '''
+    fun = lambda t : fun(t) - requested
     t = julian_centuries() if t is None else t
     t1 = t2 = t
     v1 = v0 = fun(t)
@@ -538,9 +539,9 @@ def solar_prediction(delta, requested, fun, epsilon = 0.000001, span = 0.01, t =
             return None
         t2 += delta
         v2 = fun(t2)
-        if (v1 <= requested <= v2) or ((requested >= v1 >= v2) and (requested <= v0)):
+        if (v1 <= 0 <= v2) or ((0 >= v1 >= v2) and (0 <= v0)):
             break
-        if (v1 >= requested >= v2) or ((requested <= v1 <= v2) and (requested >= v0)):
+        if (v1 >= 0 >= v2) or ((0 <= v1 <= v2) and (0 >= v0)):
             break
         t1 = t2
         v2 = v1
@@ -554,12 +555,12 @@ def solar_prediction(delta, requested, fun, epsilon = 0.000001, span = 0.01, t =
         if abs(v1 - v2) < epsilon:
             return tm if abs(vm) < epsilon else None
         if v1 < v2:
-            if requested < vm:
+            if 0 < vm:
                 t2 = tm
             else:
                 t1 = tm
         elif v1 > v2:
-            if requested > vm:
+            if 0 > vm:
                 t2 = tm
             else:
                 t1 = tm
-- 
cgit v1.2.3-70-g09d2