def normalizeBins(altBlockNumber, scaleFactor, bins):
    """Normalize bins > 60 degrees of latitude

    Above 60 degrees latitude, FIS-B only sends 
    even-numbered blocks.

    To maintain the row and column numbers we used,
    each block above 60 deg is split in to a left
    half and a right half. The left half is the
    even column, and the right half is the odd column.

    Since we are getting only half the resolution,
    we double each bin.

    If the ``altBlockNumber`` isn't above 60 degrees, we just
    return the original bins.

    Args:
        altBlockNumber (int): Alternate block number to consider.
        scaleFactor (int): High (0), Medium (1), or Low (2).
        bins (str): Bin string to convert.

    Returns:
        tuple: Tuple:

          * (bool) ``True`` if we made a conversion (> 60 degrees) or
            ``False`` if we didn't.
          * (str) Bin string to use.
    """
    altRow = int(altBlockNumber / 1000)
    
    # First row at 60 degs: High-> 900, Med-> 180, Low-> 100
    if (scaleFactor == 0) and (altRow < 900):
        return (False, [bins])
    elif (scaleFactor == 1) and (altRow < 180):
        return (False, [bins])
    elif (scaleFactor == 2) and (altRow < 100):
        return (False, [bins])

    # If here, we are higher than 60 degs

    # bin value of '0' is sent by emptyBlockMessages()
    # as a shame. Just return True. The return value of
    # ['0'] is ignored.
    if bins == '0':
        return (True, ['0'])

    # We take a single block and make a left hand and
    # right hand block.
    leftBins = ''
    rightBins = ''

    for i in range(0,4):
        for j in range(0, 16):
            lpixel = bins[(i * 32) + j + 16]
            rpixel = bins[(i * 32) + j]
            leftBins = leftBins + lpixel + lpixel
            rightBins = rightBins + rpixel + rpixel

    return (True, [leftBins, rightBins])