How many ways to make a straight flush in 7 card poker? (53 card deck with joker) I can't seem to figure this one out. 
There are 53 cards in this deck, 1 joker that can assume any rank, choose from 7 cards. 
This is what I got:
$$\binom{9}{1}\binom{4}{1}\binom{5}{4}\binom{46}{2} = 186,300$$
I multiplied 9 by 4 to get the amount of five card straights. I realized the joker can only assume the rank of the highest four ranks of the straight, else it will form a higher straight. I reasoned there are four high ranks plus the joker, and I want to choose any four of those five to complete the set. Next I excluded the five cards in the straight plus the one that wasn't chosen. I also took out the next consecutive highest card, so a higher flush doesn't form. After this there was 46 of 53 cards remaining to choose the last two cards from.
However, I have looked at multiple tables online. All of these tables get  184,832 as their solution. I'm not sure where I went wrong here, any advice?
 A: I found 210,964 hands of 7 cards that contain at least one 5-card straight flush, using the following Python 3 program, which takes about 21 minutes to run on my laptop.
from itertools import combinations
from functools import lru_cache

JACK, QUEEN, KING, ACE = 11, 12, 13, 14

N_HANDS = 154143080       # 53 choose 7

deck = ["JOKER"] + [(rank, suit)
  for rank in range(2, ACE + 1)
  for suit in range(4)]
assert len(deck) == 53

no_joker_straights = {
    tuple(range(i, i + 5)) for i in range(2, ACE + 1) if i + 4 <= ACE}
no_joker_straights.add((2, 3, 4, 5, ACE))
joker_straights = {
    tuple(sorted(set(hand) - set([x])))
    for hand in no_joker_straights
    for x in hand}

found = 0
divisor = N_HANDS // 100

@lru_cache(maxsize=None)
def is_straight_flush(hand):
    joker = False
    if "JOKER" in hand:
        joker = True
        hand = list(hand)
        hand.remove("JOKER")
    # Check that it's a flush.
    if len({suit for (_, suit) in hand}) != 1:
        return False
    # Check that it's a straight.
    return (tuple(rank for rank, _ in hand) in
        (joker_straights if joker else no_joker_straights))

for i, hand in enumerate(combinations(deck, 7)):
    if i % divisor == 0:
        print("{}% complete ({:,})".format(i // divisor, found))
    for subhand in combinations(hand, 5):
        if is_straight_flush(subhand):
            found += 1
            break

print("{:,} straight flushes in {:,} hands".format(found, N_HANDS))

