Index: /trunk/FACT++/src/makeschedule.cc
===================================================================
--- /trunk/FACT++/src/makeschedule.cc	(revision 18443)
+++ /trunk/FACT++/src/makeschedule.cc	(revision 18444)
@@ -195,7 +195,7 @@
     bool IsRangeValid(const double &jd_begin, const double &jd_end) const
     {
-        const double step = 1./24/60;
-        for (double jd=jd_begin; jd<jd_end+step/2; jd++)
-            if (!valid(SolarObjects(jd)))
+        const uint32_t n = nearbyint((jd_end-jd_begin)*24*60);
+        for (uint32_t i=0; i<n; i++)
+            if (!valid(SolarObjects(jd_begin+i/24./60.)))
                 return false;
 
@@ -390,7 +390,9 @@
         if (intersection<0)
         {
-            const double step = 1./24/60;
-            for (double jd=obs[i].begin; jd<obs[i].end-step/2; jd+=step)
+            const uint32_t n = nearbyint((obs[i].end-obs[i].begin)*24*60);
+            for (uint32_t ii=0; ii<n; ii++)
             {
+                const double jd = obs[i].begin+ii/24./60.;
+
                 const SolarObjects so(jd);
                 if (obs[i-1].getThreshold(so)>=obs[i+1].getThreshold(so))
@@ -508,5 +510,4 @@
     {
         string tm = Time(src.begin).GetAsStr();
-
         if (src.preobs.size()>0)
         {
@@ -640,11 +641,11 @@
     const RstTime sun_rise = GetSolarRst(floor(time.JD())+0.5, angle_sun_rise);
 
-    const double sunset  = ceil(sun_set.set*24*60)/24/60;
-    const double sunrise = floor(sun_rise.rise*24*60)/24/60;
+    const double sunset  = ceil(sun_set.set*24*60)   /24/60 + 1e-9;
+    const double sunrise = floor(sun_rise.rise*24*60)/24/60 + 1e-9;
 
     cout << "\n";
-    cout << "Date: " << Time(floor(sunset)) << "\n";
-    cout << "Set:  " << Time(sun_set.set)   << "\n";
-    cout << "Rise: " << Time(sun_rise.rise) << "\n";
+    cout << "Date: " << Time(floor(sunset)).GetAsStr() << "\n";
+    cout << "Set:  " << Time(sunset).GetAsStr()  << "  [" << Time(sun_set.set)   << "]\n";
+    cout << "Rise: " << Time(sunrise).GetAsStr() << "  [" << Time(sun_rise.rise) << "]\n";
     cout << endl;
 
@@ -709,7 +710,9 @@
     vector<Source> obs;
 
-    const double step = 1./24/60;
-    for (double jd=sunset; jd<sunrise-step/2; jd+=step)
-    {
+    const uint32_t n = nearbyint((sunrise-sunset)*24*60);
+    for (uint32_t i=0; i<n; i++)
+    {
+        const double jd = sunset + i/24./60.;
+
         const SolarObjects so(jd);
 
