Index: /trunk/FACT++/src/scheduler.cc
===================================================================
--- /trunk/FACT++/src/scheduler.cc	(revision 19653)
+++ /trunk/FACT++/src/scheduler.cc	(revision 19654)
@@ -52,6 +52,8 @@
     Nova::SolarObjects solarobj;
     Nova::ZdAzPosn position;
-    Nova::RstTime vis_sun;
-    Nova::RstTime vis_obj;
+    Nova::RstTime rst_sun;
+    Nova::RstTime rst_obj;
+
+    int vis_obj = -1;
 
     double moon_dist   = -1;
@@ -72,6 +74,6 @@
         position  = Nova::GetHrzFromEqu(equ, jd);
         moon_dist = Nova::GetAngularSeparation(equ, solarobj.fMoonEqu);
-        vis_sun   = Nova::GetSolarRst(jd, -12);
-        vis_obj   = Nova::GetObjectRst(equ, jd, conditions[kZenithMax]);
+        rst_sun   = Nova::GetSolarRst(jd, -12);
+        vis_obj   = Nova::GetObjectRst(rst_obj, equ, jd, 90-conditions[kZenithMax]);
 
         current   = FACT::PredictI(solarobj, equ);
@@ -1042,14 +1044,27 @@
         // If required: For better performance, both (sun and object)
         // RstTime could be calculated only here
-        const double sun_set  = fmod(check.vis_sun.set,     1);
-        const double sun_rise = fmod(check.vis_sun.rise,    1);
-
-        const double rise     = fmod(check.vis_obj.rise,    1);
-        const double trans    = fmod(check.vis_obj.transit, 1);
-        const double set      = fmod(check.vis_obj.set,     1);
-
-        if ((rise <sun_set || rise >sun_rise) &&
-            (trans<sun_set || trans>sun_rise) &&
-            (set  <sun_set || set  >sun_rise) )
+        const double sun_set  = fmod(check.rst_sun.set,     1);
+        const double sun_rise = fmod(check.rst_sun.rise,    1);
+
+        const double rise     = fmod(check.rst_obj.rise,    1);
+        const double trans    = fmod(check.rst_obj.transit, 1);
+        const double set      = fmod(check.rst_obj.set,     1);
+
+        // Object is at at least visible at some time during the
+        // night (above the required horizon) or is circumpolar
+        // above that horizon
+        //
+        // Considtions are:
+        // ((Rises      after sun-rise or before sun-set) and
+        //  (Culminates after sun-rise or before sun-set) and
+        //  (Sets       after sun-rise or before sun-set) and
+        //  (object not circumpolar/rise-trans-set valid))
+        // or is circumpolar below the defined horizon
+        //
+        if (check.vis_obj==-1 ||
+            (check.vis_obj==0 &&
+             (rise <sun_set || rise >sun_rise) &&
+             (trans<sun_set || trans>sun_rise) &&
+             (set  <sun_set || set  >sun_rise)))
             return;
 
