@register.filter(is_safe=True)
def smartround(num):
    """
    rounds floats in more human readable format
    e.g.
    341.123434 mUSD -> 341mUSD
    0.45345345 mUSD -> 0.5mUSD
    0.034545 mUSD -> 0.03mUSD
    0.0014545 mUSD -> 0.001mUSD
    etc.
    """
    if isinstance(num, float):
        whole_part, dec_part = str(num).split(".")
        whole_part_len = len(whole_part)
        if whole_part_len > 3:
            return int(num)
        else:
            try:
                round_to = re.search(r'[^0]', dec_part).start()
                return round(num, round_to+1)
            except AttributeError:
                return int(num)
    return num