Hi Jim!
Glad that got resolved haha ... it happens to the best of us 
I was already wondering in the code. You declared f_data but you're using fdata ... but that's no longer relevant. You found the issue.
I do like your idea though; even if folks could just do a minimal check before considering or actually going in to see an optometrist.
Making the executables smaller;
Well, with Lazarus (actually it's the Free Pascal Compiler FPC), tiny programs seem large. But as the program becomes much more complex, the size of the executable doesn't increase in the same proportion and stays smaller than expected.
I couldn't find the graph representing this, but initially small Delphi programs produce smaller EXE's. However, as the code becomes bigger, the Delphi EXE size will quickly exceed the size of a Lazarus EXE.
Another observation when comparing Delphi and Lazarus; Lazarus is much more optimized and code is quite often much faster than it's Delphi counter part.
Here is an interesting read on Size and how to fine tune it: Size Matters.
Having said all that, these are the rules I follow to keep size small;
1) When using images (for example PNG's), first optimize the image file size before using it in Lazarus.
Sometimes i use PNG images, and optimize the files (sometimes with amazing results) using ImageOptim (MacOS).
I believe OpiPNG (for Windows) produces similar optimizations.
2) Remove unused code (obvious) - this includes unused variables and units (the compiler actually informs you about those).
3) In Lazarus; create 2 build profiles: "Distribution" and "Debug". When building a release, set the profile to "Distribution".
Under "Project" - "Project Options" - "Compiler Options", you can see that there is a "Default" build mode.
Next to that you'll see a button "..." which allows to automatically create these 2 build modes.
4) After the executabel has been build, you can use the "strip" command in a DOS box.
I'm not sure about Windows, but under MacOS and Linux it still strips a lot of useless info, making the EXE even smaller.
> strip myprogram.exe
If you can't find the DOS strip command, it's somewhere tucked away in the freepascal setup.
If Lazarus was added to the PATH then it should work right away.
Also note: using tools like UPX is something I cannot recommend.
If you're not familiar with UPX. It used to be a great tool that compresses your binary executable to a much smaller executable file. What it in essence does is unpack it's data load (your actual EXE) in memory and then starts the extracted EXE.
Downside: quite a lot of environments do not seem to like this (unlike the Win 3.1x/DOS days) and it's often falsely identified as malware.
On that note; I guess it also depends on how you'd like to distribute your app. 13Mb is not small, but it may not be a problem for floppy, or email (after using ZIP), or download.
Most of my complexer applications do not exceed 5Mb.
Hope this helps!
And yes cheers and prost both works for me! 
Cheers!