// normalize
    if (isNaN(val)) {
      val = lastVal != null ? lastVal : minValue;
    } 
  
    if (val < minValue) {
      val = minValue
    } else if (val > maxValue) {
      val = maxValue
    }