There is an assert in `CWalletTx::RelayWalletTransaction` that gets hit.  All other code paths check `fBroadcastTransactions` before getting to `CWallet::ResendWalletTransactionsBefore` except the rpc call `resendwalletransactions`.

It's an easy fix, but we just need to decide whether to throw an error or return an empty array of rebroadcasted transaction ids.

Should be fixed for 0.15.
if (outgoing && IsChange(out)) {
                debit -= out.nValue;
            } else if (IsMine(out) & filter && depth >= minDepth && (!account || *account == GetAccountName(out.scriptPubKey))) {
                balance += out.nValue;
            }
        }
        
        if (outgoing && (!account || *account == wtx.strFromAccount)) {
            balance -= debit;
        }
    }
    if (account) {
        balance += CWalletDB(*dbw).GetAccountCreditDebit(*account);
    }
    return balance;
}
CAmount CWallet::GetAvailableBalance(const CCoinControl* coinControl) const
{
    LOCK2(cs_main, cs_wallet);
    CAmount balance = 0;
    std::vector<COutput> vCoins;
    AvailableCoins(vCoins, true, coinControl);
    for (const COutput& out : vCoins) {
        if (out.fSpendable) {
            balance += out.tx->tx->vout[out.i].nValue;
        }
    }
    return balance;
}
void CWallet::AvailableCoins(std::vector<COutput> &vCoins, bool fOnlySafe, const CCoinControl *coinControl, const CAmount &nMinimumAmount, const CAmount &nMaximumAmount, const CAmount &nMinimumSumAmount, const uint64_t &nMaximumCount, const int &nMinDepth, const int &nMaxDepth) const