 (defmethod attrib-value-element->condition :timeRange
   [attrib-name value-elem]
   (let [[start-time stop-time] (parse-time-range-element value-elem)]
-    (qm/map->AttributeRangeCondition
-      {:type :time
-       :name attrib-name
-       :min-value start-time
-       :max-value stop-time})))
+    (if (or start-time stop-time)
+      (qm/map->AttributeRangeCondition
+        {:type :time
+         :name attrib-name
+         :min-value start-time
+         :max-value stop-time})
+      {:errors [(msg/one-of-min-max-msg)]})))
 
 (defn- additional-attribute-element->conditions
   "Returns the query conditions of the given additionalAttribute element"

            [cmr.search.models.query :as qm]
            [cmr.search.models.group-query-conditions :as gc]
            [cmr.search.services.parameters.converters.attribute :as p]
            [cmr.common.date-time-parser :as date-time-parser]))

(defn- attrib-value->condition
  [attrib-type attrib-name value]

  (let [attrib-name (cx/string-at-path additional-attribute [:additionalAttributeName])
        attrib-value (first (cx/content-at-path additional-attribute [:additionalAttributeValue]))]
    (attrib-value-element->condition attrib-name attrib-value)))

(defn- raise-condition-errors
  "Raise condition errors if there are validation errors in the conditions"
  [conditions]
  (let [validation-errors (mapcat :errors conditions)]
    (when (seq validation-errors)
      (errors/throw-service-errors :bad-request validation-errors))))

;; Converts additionalAttributes element into query condition, returns the converted condition
(defmethod a/element->condition :attribute
