Fan smooth speed percentage change

I previously used this script to control fans in a media cabinet:

# Sideboard fan set speed auto
sequence:
- service: fan.set_percentage
  entity_id: fan.sideboard
  data_template:
    percentage: >
      {% set temp = states('sensor.sideboard_temperature') | float %}
      {% if states.switch.unraid_vm_windows_10.state == 'on' %}
        {% if temp < 26 %}
          33
        {% elif temp < 27 %}
          66
        {% else %}
          100
        {% endif %}
      {% else %}
        {% if temp < 27 %}
          33
        {% elif temp < 28 %}
          66
        {% else %}
          100
        {% endif %}
      {% endif %}

They’re not super loud it’s more the sudden jumps in speed which are noticeable. So, I changed the script to:

# Sideboard fan set speed auto
sequence:
- service: fan.set_percentage
  entity_id: fan.sideboard
  data_template:
    percentage: >
      {% set temp = states('sensor.sideboard_temperature') | float %}
      {% if temp <= 21 %}
        10
      {% elif 21 < temp < 30 %}
        {{ ((temp + -20.00) / 0.1000) | round(0) | int }}
      {% elif temp >= 30 %}
        100
      {% endif %}


Where, 21°C is 10% speed and 30°C speed is 100% - this is works well and I don’t have any any audible jumps in fan speed now.

I’m just wondering if there’s a way to give the graph more of a curve (like the green lined marked) so that I can keep the fans quieter at lower temperatures?