 
 (defn lat-lo-phase-shift
   [lat-max lat-lo]
-  (log/debug "Got lat-max:" lat-max)
-  (int
-    (- lat-max
-       1
-       (Math/floor (/ (* (dec lat-max)
-                         (- lat-lo default-lat-lo))
-                      (- default-lat-hi default-lat-lo))))))
+  (let [res (/ lat-max default-lat-abs-hi)]
+    (log/debug "Got lat-max:" lat-max)
+    (log/debug "Got resolution:" res)
+    (int
+      (- lat-max
+         1
+         (Math/floor (/ (* (dec lat-max)
+                           (adjusted-lat lat-lo res))
+                        (adjusted-lat default-lat-hi res)))))))
 
 (defn lat-hi-phase-shift
   [lat-max lat-hi]
-  (log/debug "Got lat-max:" lat-max)
-  (int
-    (- lat-max
-       1
-       (Math/ceil (/ (* (dec lat-max)
-                        (- lat-hi default-lat-lo))
-                     (- default-lat-hi default-lat-lo))))))
+  (let [res (/ lat-max default-lat-abs-hi)]
+    (log/debug "Got lat-max:" lat-max)
+    (log/debug "Got resolution:" res)
+    (int
+      (- lat-max
+         1
+         (Math/ceil (/ (* (dec lat-max)
+                          (adjusted-lat lat-hi res))
+                       (adjusted-lat default-lat-hi res)))))))
 
 (defn normalize-lat-lon
   [dim]


(def default-dim-stride 1)
(def default-lat-lon-stride 1)
(def default-lat-lon-resolution 1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;   Records   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;   Support/Utility Functions   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defn adjusted-lon
  [lon resolution]
  (- (* lon resolution)
     (* default-lon-lo resolution)))

(defn adjusted-lat
  [lat resolution]
  (- (* lat resolution)
     (* default-lat-lo resolution)))

;; XXX Can we use these instead? Why was the phase shifting written
;;     so obtrusely? There's got to be a reason, I just don't know it ...
;; XXX This is being tracked in CMR-4959
