import math


def fractindex(numbers, index):
    """Given a list of numeric values and an index, returns the value 
    stored at index. If the index is fractional, then it will calculate
    the appropriate 'midway' value between the whole portion of the index
    value and the next list item above it.
    Eg.: fractindex([2.8, 4], 0.5) => 3.4"""
    if int(index)==index:
        return numbers[int(index)]
    frac, whole = math.modf(index)
    if frac < 0:
        lower = abs(frac)
        upper = 1 - lower
        whole = len(numbers) + int(whole) - 1
    else:
        upper = frac
        lower = 1 - frac
        whole = int(whole)
    return numbers[whole] * lower + numbers[whole+1] * upper