 		selectedRowIndex = nil
 		
 		guard let index = index
-			where index > 0 
+			where index >= 0
 			else { return }
 		
 		tableView.deselectRowAtIndexPath(NSIndexPath(forRow: index, inSection: 0), animated: true)

	private func computeLayoutForTopDisplay(window window: UIWindow) -> ComputeLayoutTuple {
		var offscreenHeight: CGFloat = 0
		
		let anchorViewX = (anchorView?.windowFrame?.minX ?? 0)
		let anchorViewMaxY = (anchorView?.windowFrame?.maxY ?? 0)
		
		let x = anchorViewX + topOffset.x
		var y = (anchorViewMaxY + topOffset.y) - tableHeight

		var layout: ComputeLayoutTuple = (0, 0, 0, 0)
		var direction = self.direction
		
		guard let window = UIWindow.visibleWindow() else { return (0, 0, 0, 0, 0, false, direction) }
		
		barButtonItemCondition: if anchorView is UIBarButtonItem? {
			let isRightBarButtonItem = anchorView?.plainView.frame.minX > window.frame.midX
			
			guard isRightBarButtonItem else { break barButtonItemCondition }
			
			let width = self.width ?? 0
			let anchorViewWidth = anchorView?.plainView.frame.width ?? 0
			let x = -(width - anchorViewWidth)
			
			bottomOffset = CGPoint(x: x, y: 0)
		}
		
		switch direction {
		case .Any:
			layout = computeLayoutBottomDisplay(window: window)
			direction = .Bottom
			
			if layout.offscreenHeight > 0 {
				let topLayout = computeLayoutForTopDisplay(window: window)
				
				if topLayout.offscreenHeight < layout.offscreenHeight {
					layout = topLayout
					direction = .Top
				}
			}
		case .Bottom:
			layout = computeLayoutBottomDisplay(window: window)
			direction = .Bottom
		case .Top:
			layout = computeLayoutForTopDisplay(window: window)
			direction = .Top
		}
		
		let visibleHeight = tableHeight - layout.offscreenHeight
