In the transactions list, if you right click a transaction and choose "view transaction details", the "Output index" listed in the resulting window is usually wrong.

With outgoing transactions, if you have a transaction with outputs like:

    vout 0: AddrA
    vout 1: AddrB, which belongs to sender
    vout 2: AddrC
    vout 3: <change>
    vout 4: AddrD

Then the output index as reported by the GUI will be:

    tx to AddrA: 0
    tx to AddrB: <transaction not listed>
    tx to AddrC: 1
    tx to AddrD: 2
    
With received transactions, the output index always seems to be reported as 0 in transactions I've checked.

I'd guess that rather than the actual vout index, some internal wallet index is being reported.

This is 0.13.2. I don't know when the bug was introduced.
parts.append(TransactionRecord(hash, nTime, TransactionRecord::Other, "", nNet, 0));
            parts.last().involvesWatchAddress = involvesWatchAddress;
        }
    }
    return parts;
}
void TransactionRecord::updateStatus(const CWalletTx &wtx)
{
    AssertLockHeld(cs_main);
    
    
    CBlockIndex* pindex = NULL;
    BlockMap::iterator mi = mapBlockIndex.find(wtx.hashBlock);
    if (mi != mapBlockIndex.end())
        pindex = (*mi).second;
    
    status.sortKey = strprintf("%010d-%01d-%010u-%03d",
        (pindex ? pindex->nHeight : std::numeric_limits<int>::max()),
        (wtx.IsCoinBase() ? 1 : 0),
        wtx.nTimeReceived,
        idx);
    status.countsForBalance = wtx.IsTrusted() && !(wtx.GetBlocksToMaturity() > 0);
    status.depth = wtx.GetDepthInMainChain();
    status.cur_num_blocks = chainActive.Height();
    if (!CheckFinalTx(wtx))
    {
        if (wtx.tx->nLockTime < LOCKTIME_THRESHOLD)