         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

        case nil: return nil
        }
    }
    // Having an internal, non-Observable bidHistoryState helps us in our gesture recognizer by simplifying the code.
    private var _bidHistoryState: BidHistoryState = .Closed {
        willSet(newValue) {

    let lotViewModel: LiveAuctionLotViewModelType
    let salesPerson: LiveAuctionsSalesPersonType
    let bidHistoryState = Observable<BidHistoryState>(.Closed)
    // Changes in the bid history frame.origin.y from its original, at rest position.
    let bidHistoryDelta = Observable<(delta: CGFloat, animating: Bool)>((delta: 0, animating: false))

    private weak var bidHistoryViewController: LiveAuctionBidHistoryViewController?
