def farnsworth(wpm=20, cwpm=None):
    """
	Generate Morse timings based on ARRL Farnsworth timing

	This permits optionally specifying a different overall words
	per minute. The character WPM determines the timings of the 
	dits, dahs, and intra-letter spaces; the overall WPM determines
	the timings of the inter-letter and inter-word spaces.
	"""
    if not cwpm:
        cwpm = wpm
    cwpm = max(cwpm, wpm)
    dit = 1.2 / cwpm
    t_a = (60 * cwpm - 37.2 * wpm) / (cwpm * wpm)
    return {'dit': dit, 'dah': dit * 3, 'inter_symbol': dit, 'inter_letter':
        t_a * 3 / 19.0, 'inter_word': t_a * 7 / 19.0}
