diff --git a/changelog.md b/changelog.md
index 8c81bc4..fea9ccc 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,19 @@
## grblHAL changelog
+Build 20230320
+
+Core:
+
+* Another fix for issue #269 - setting of piecewise spindle linearisation values not working.
+
+Plugins:
+
+* Spindle: Fix for [issue #18](https://github.com/grblHAL/Plugins_spindle/issues/18) - incorrect spindle RPM limits set from VFD response.
+
+* Embroidery: added option to use Z limit pin as needle trigger.
+
+---
+
Build 20230317
Core:
diff --git a/grbl.h b/grbl.h
index ef81e24..b77fe9d 100644
--- a/grbl.h
+++ b/grbl.h
@@ -42,7 +42,7 @@
#else
#define GRBL_VERSION "1.1f"
#endif
-#define GRBL_BUILD 20230317
+#define GRBL_BUILD 20230320
#define GRBL_URL "https://github.com/grblHAL"
diff --git a/spindle_control.c b/spindle_control.c
index bf06423..7855704 100644
--- a/spindle_control.c
+++ b/spindle_control.c
@@ -715,7 +715,7 @@ uint_fast16_t spindle_compute_pwm_value (spindle_pwm_t *pwm_data, float rpm, boo
do {
idx--;
if(idx == 0 || rpm > pwm_data->piece[idx].rpm) {
- pwm_value = floorf(pwm_data->piece[idx].start * rpm - pwm_data->piece[idx].end);
+ pwm_value = floorf((pwm_data->piece[idx].start * rpm - pwm_data->piece[idx].end) * pwm_data->pwm_gradient);
break;
}
} while(idx);
diff --git a/vfs.h b/vfs.h
index b81cb9a..2089e76 100644
--- a/vfs.h
+++ b/vfs.h
@@ -92,8 +92,8 @@ typedef struct {
} vfs_dirent_t;
typedef struct {
- size_t size;
- size_t used;
+ uint64_t size;
+ uint64_t used;
} vfs_free_t;
typedef struct {