I would say there is a third category in the Refactor vs Rewrite space... And that's updating your language versions, compilers, and libraries... Sometimes just adopting modern coding techniques has a great benefit.
Take C# for example, v7 code writes a lot cleaner, safer, and more concise than v2.. Things like the Elvis and null coalescing operator help out a ton.
Switching compilers might also breath new life into older code. So might new libraries that might make things easier to work with and implement... Networking is a great example of a spectrum of implementation difficulty.
Also- embedded linux systems... Think about installing new tools- switch to git from svn. or add Vi to your system etc etc.
It doesn't always have to be a refactor vs rewrite.. Your architecture is probably in need of improvement, but it works... maybe you just need to think about how your code is written etc.