Considering how much of a rush job Locomotive BASIC was, it's remarkably good. But it's not perfect.
Sinclair BASIC has one powerful keyword that Locomotive BASIC lacks: VAL. Sure, Locomotive BASIC has a VAL() function, but Sinclair's one is a function evaluator:
10 FOR X=-5 TO 5
20 PRINT X,VAL ("X * X")
30 NEXT X
This would fail on an Amstrad CPC, but on ...
Was Locomotive BASIC significantly better than Sinclair BASIC?
TL;DR: Oh, yes, it was!
I'm aware that both Basics were more advanced than the C64 Microsoft implementation,
Comparison of C64 BASIC to other BASICs of the same time is never in favour for the C64, as it's a quick port of the original 1977 PET Version.
but neither [Locomotive BASIC, ...
The big improvement to the language in Locomotive BASIC, compared to Sinclair BASIC (and many other BASICs), was the addition of timer support:
AFTER 50,0 GOSUB 320
would call the subroutine at line 320 after a second, and
EVERY 500,0 GOSUB 320
would call the subroutine every ten seconds. In both cases, the first value is the interval in fiftieths of a ...