Index: trunk/FACT++/src/InterpreterV8.cc
===================================================================
--- trunk/FACT++/src/InterpreterV8.cc	(revision 14689)
+++ trunk/FACT++/src/InterpreterV8.cc	(revision 14690)
@@ -1519,9 +1519,19 @@
 }
 
-Handle<Object> InterpreterV8::ConstructRiseSet(const Handle<Value> time, const ln_rst_time &rst)
+Handle<Object> InterpreterV8::ConstructRiseSet(const Handle<Value> time, const ln_rst_time &rst, const bool &rc)
 {
     Handle<Object> obj = Object::New();
     obj->Set(String::New("time"), time, ReadOnly);
-    if (rst.transit<0)
+
+    const uint64_t v = uint64_t(time->NumberValue());
+    const double jd = Time(v/1000, v%1000).JD();
+
+    const bool isUp = rc>0 ||
+        (rst.rise<rst.set && (jd>rst.rise && jd<rst.set)) ||
+        (rst.rise>rst.set && (jd<rst.set  || jd>rst.rise));
+
+    obj->Set(String::New("isUp"), Boolean::New(rc>=0 && isUp), ReadOnly);
+
+    if (rc!=0)
         return obj;
 
@@ -1533,6 +1543,7 @@
 
     obj->Set(String::New("rise"), rise, ReadOnly);
-    obj->Set(String::New("set"),  set, ReadOnly);
+    obj->Set(String::New("set"), set, ReadOnly);
     obj->Set(String::New("transit"), trans, ReadOnly);
+
     return obj;
 }
@@ -1558,5 +1569,5 @@
         if (str==string("civil").substr(0, str.length()))
             hrz = LN_SOLAR_CIVIL_HORIZON;
-        if (str==string("nautic").substr(0, str.length()))
+        if (str==string("nautical").substr(0, str.length()))
             hrz = LN_SOLAR_NAUTIC_HORIZON;
         if (str==string("astronomical").substr(0, str.length()))
@@ -1583,9 +1594,6 @@
 
     ln_rst_time sun;
-    const bool rc = ln_get_solar_rst_horizon(JD-0.5, &obs, hrz, &sun);
-    if (rc)
-        sun.transit = -1;
-
-    Handle<Object> rst = ConstructRiseSet(date, sun);
+    const int rc = ln_get_solar_rst_horizon(JD-0.5, &obs, hrz, &sun);
+    Handle<Object> rst = ConstructRiseSet(date, sun, rc);
     rst->Set(String::New("horizon"), Number::New(hrz));
     return handle_scope.Close(rst);
@@ -1615,10 +1623,6 @@
 
     ln_rst_time moon;
-    const bool rc = ln_get_lunar_rst(JD-0.5, &obs, &moon);
-
-    if (rc)
-        moon.transit = -1;
-
-    Handle<Object> rst = ConstructRiseSet(date, moon);
+    const int rc = ln_get_lunar_rst(JD-0.5, &obs, &moon);
+    Handle<Object> rst = ConstructRiseSet(date, moon, rc);
     return handle_scope.Close(rst);
 };
Index: trunk/FACT++/src/InterpreterV8.h
===================================================================
--- trunk/FACT++/src/InterpreterV8.h	(revision 14689)
+++ trunk/FACT++/src/InterpreterV8.h	(revision 14690)
@@ -105,5 +105,5 @@
     static v8::Handle<v8::Value> MoonHorizon(const v8::Arguments &args);
     static v8::Handle<v8::Value> SunHorizon(const v8::Arguments &args);
-    static v8::Handle<v8::Object> ConstructRiseSet(const v8::Handle<v8::Value>, const ln_rst_time &);
+    static v8::Handle<v8::Object> ConstructRiseSet(const v8::Handle<v8::Value>, const ln_rst_time &, const bool &);
 #endif
 
