 
         {`p/nav (fn [_ k v]
                   (case k
-                    :before?    (.isBefore ldt (-> v meta ::d/obj))
-                    :after?     (.isAfter  ldt (-> v meta ::d/obj))
+                    :before?    (.isBefore ldt (original-object v))
+                    :after?     (.isAfter  ldt (original-object v))
                     :iso-format (.format DateTimeFormatter/ISO_LOCAL_DATE_TIME ldt)
                     :format     (.format (dt-formatter v) ldt)
                     :instant    (.toInstant ldt (or (zone-offset v) @system-offset))

                 :nano   epoch-nano}}
        {`p/nav (fn [_ k v]
                  (case k
                    :before?         (.isBefore inst (-> v meta ::d/obj))
                    :after?          (.isAfter  inst (-> v meta ::d/obj))
                    :iso-format      (.format DateTimeFormatter/ISO_INSTANT inst)
                    :format          (.format ^DateTimeFormatter v inst)
                    :local-time      (LocalTime/ofInstant      inst  (or (zone-id v) @system-zone))

    :rata-die     (.get o JulianFields/RATA_DIE)
    nil))

(defn- original-object
  [d]  ;; `d/datafy` adds the original object in the metadata
  (-> d meta ::d/obj))

(defonce ^:private system-zone
  (delay (ZoneId/systemDefault)))

