         }
         senderRect.origin.y = min(UIScreen.ft_height(), senderRect.origin.y)
         
-        if senderRect.origin.y + senderRect.size.height/2 < UIScreen.ft_height()/2 {
+        if popOverPosition == .alwaysAboveSender {
+            arrowDirection = .down
+        } else if popOverPosition == .alwaysUnderSender {
             arrowDirection = .up
         } else {
-            arrowDirection = .down
+            if senderRect.origin.y + senderRect.size.height/2 < UIScreen.ft_height()/2 {
+                arrowDirection = .up
+            } else {
+                arrowDirection = .down
+            }
         }
     }
     


extension FTPopOverMenu {
    
    public static func showForSender(sender : UIView, with menuArray: [FTMenuObject], menuImageArray: [Imageable]? = nil, config: FTConfiguration? = nil, done: @escaping (NSInteger) -> Void, cancel: (() -> Void)? = nil) {
        FTPopOverMenu().showForSender(sender: sender, or: nil, with: menuArray, menuImageArray: menuImageArray, config: config, done: done, cancel: cancel)
    }

    public static func showForEvent(event : UIEvent, with menuArray: [FTMenuObject], menuImageArray: [Imageable]? = nil, config: FTConfiguration? = nil, done: @escaping (NSInteger) -> Void, cancel: (() -> Void)? = nil) {
        FTPopOverMenu().showForSender(sender: event.allTouches?.first?.view!, or: nil, with: menuArray, menuImageArray: menuImageArray, config: config, done: done, cancel: cancel)
    }

    public static func showFromSenderFrame(senderFrame : CGRect, with menuArray: [FTMenuObject], menuImageArray: [Imageable]? = nil, config: FTConfiguration? = nil, done: @escaping (NSInteger) -> Void, cancel: (() -> Void)? = nil) {
        FTPopOverMenu().showForSender(sender: nil, or: senderFrame, with: menuArray, menuImageArray: menuImageArray, config: config, done: done, cancel: cancel)
    }
    
}

    var done : ((_ selectedIndex : NSInteger) -> Void)!
    var cancel : (() -> Void)!
    var configuration = FTConfiguration()
    var popOverPosition : FTPopOverPosition = .automatic
    
    fileprivate lazy var backgroundView : UIView = {
        let view = UIView(frame: UIScreen.main.bounds)
