nearest-expiration = date + exp ->
  exp.
    day  = 15
    year = date.year
  ;

  date.
    if (day < exp.day) ->
      case (month =  1,  2,  3) exp.month =  3
      case (month =  4,  5,  6) exp.month =  6
      case (month =  7,  8,  9) exp.month =  9
      case (month = 10, 11, 12) exp.month = 12
      else <>
    else
      case (month =  1,  2    ) exp.month =  3
      case (month =  3,  4,  5) exp.month =  6
      case (month =  6,  7,  8) exp.month =  9
      case (month =  9, 10, 11) exp.month = 12
      case (month = 12        ) exp.month =  3; exp.year ++
      else <>
    ;
  ;
_
  date, exp : datetime
;
