         let atRestMetadataPosition = self.atRestMetadataPosition ?? 0
         let openedMetadataPosition = self.openedMetadataPosition ?? 0
 
+        print(alignMetadataToTopConstraint?.constant)
+
         switch gestureRecognizer.state {
-
         case .Began:
             _initialBidHistoryState = _bidHistoryState
 
-            // TODO: If we are showing the metadata stack when we begin the gesture, initialGestureMetadataPosition is invalid.
-            lotMetadataStack?.hideAdditionalInformation?()
-            self.lotMetadataStack?.setShowInfoButtonEnabled(false)
-
-            initialGestureMetadataPosition = lotMetadataStack?.frame.origin.y ?? 0
-            alignMetadataToTopConstraint?.constant = initialGestureMetadataPosition
-
-            alignMetadataToTopConstraint?.active = true
-            lotHistoryHeightConstraint?.active = false
+            if case .Closed = _initialBidHistoryState {
+                // We're opening.
+                // Close the lot metadata, in case its open.
+                lotMetadataStack?.hideAdditionalInformation?()
+                lotMetadataStack?.setShowInfoButtonEnabled(false)
+
+                // Set up our constraint to take over from lotHistoryHeightConstraint. One of them needs to be active at all times.
+                alignMetadataToTopConstraint?.constant = atRestMetadataPosition
+                alignMetadataToTopConstraint?.active = true
+                lotHistoryHeightConstraint?.active = false
+            }
 
             // We'll be "open" for now, which is really shorthand for "opening", which will be set appropriately when the recognizer ends.
             _bidHistoryState = .Open


            // TODO: be clever about animation velocity
            UIView.animateWithDuration(ARAnimationDuration, animations: {
                self.alignMetadataToTopConstraint?.constant = self.openedMetadataPosition ?? 0 // Reset this to stick to the top, we'll set its active status below.
                self.alignMetadataToTopConstraint?.active = (targetState == .Open)
                self.lotHistoryHeightConstraint?.active = (targetState == .Closed)

                let delta = (targetState == .Open ? -openedMetadataPosition : 0)
                self.bidHistoryDelta.update((delta: delta, animating: true))


    private var lotHistoryHeightConstraint: NSLayoutConstraint?
    private var alignMetadataToTopConstraint: NSLayoutConstraint?

    private var atRestMetadataPosition: CGFloat?
    private var openedMetadataPosition: CGFloat? {
        switch atRestMetadataPosition {
