2020 Payroll Taxes (Dec 31)

Our staff is busy updating payroll tax tables for 2020. Sadly, US Federal income tax withholding has become much more complicated, due to a fairly small change.

New employees hired in 2020 or after will use a revised W-4 form. Their federal withholding then uses a different calculation method for gross income. Employees hired before 2020 will still use their original, old-style W-4 forms, unless they prefer to update.

To handle the change, we need to add a second US Federal Tax Item for the 2020 method. It also requires 3 new Tax Tables, plus an extra set of Tax Packages. The 2020 payroll import will add them automatically.

For states that use multiple Tax Packages, it’s going to be especially complicated: if there used to be 3 of them, now there will be 6. Users who have set up extra Tax Packages for child support or other complications may also need to revise them, and/or create new ones.

In your Employee accounts, you’ll need to assign different Tax Packages, depending on whether they use the old or new W-4. For employees using the 2020 W-4 forms, you’ll also need to enter a federal adjustment amount from the W-4, rather than the number of federal exemptions.

On top of all that, the IRS booklet uses an annual step table for the new calculation method. We used weekly tables in the past, but switched both versions to annual for 2020.  It’s bigger numbers, but ends up with the same results.

Most states use the W-4 for their own payroll taxes. Presumably they will also need to add a second calculation method. Most have not done that yet, but stay tuned. The chaos will probably reverberate for years.

Dennis Kolva
Programming Director


Goldenseal Pro Progress- Tables for Windows (Dec 20)

To build Goldenseal Pro for Windows, we use MFC (Microsoft Foundation Classes).  It does not include any table classes, but several other developers have written code for spreadsheet-like grids of text. After a few days of review, we chose one of the simplest. It’s basic, but easy to understand. Right now, our staff is gradually adapting it for our breakdown tables.

Step-by-step is the most productive way to get stuff working, when working with a new code library. We add something small, make sure it works, then proceed to the next step. If something goes wrong, just revert and try again. Right now our app shows an empty table, and we’re gradually filling it in.

I must say, that kind of steady, incremental progress is much more satisfying than what we experienced on the Mac version. Their NSTableView class seemed great, with many built-in features. But the charm soon wore off as we bogged down in the process of actually using it. Too many dead ends and baffling errors.

Fortunately, there was one good thing that came from the Mac  work. Some of the table interface never worked correctly, so we had to redesign it entirely. Instead of actions inside the table cells, it now uses buttons to add and delete rows, and pop-up data entry windows instead of editable table cells. That approach is easier to use for beginners, so we probably will use it for the Windows version also.

Dennis Kolva
Programming Director





Goldenseal Pro Progress (Dec 6)

When we first created Goldenseal, about 1/4 of the work was for resources rather than code. That means window layouts, menus, icons, and other cosmetic details that make up a modern GUI (Graphic User Interface).

The original Goldenseal resources were set up in Mac OS 9 format, which is now obsolete. We already converted most resources to newer formats, but a couple of the more difficult types were still undone. So we spent the past couple weeks hacking the current version of Goldenseal, to export the rest.

The hardest were the layouts for the action commands- Reconcile, Pay Bills, Write Payroll and a few others. They were stored in a binary format that the PowerPlant library could read, but not humans. Fortunately, we found a way to cheat. Loading each window also converts the data into text temporarily, with one line for each field, button or table. We then saved it into files for future use.

Both of the platforms we use have their own GUI for setting up window layouts. However, Xcode’s Interface Builder and Visual Studio’s wizards have many quirks, so it takes at least a day or two to set up each window. With 35 windows total, we’ll save time in the long run by reading the existing data from text. It’s a change that we have been meaning to do for a very long time.

The biggest challenges over the past couple weeks were with hardware. Building the current Goldenseal app requires Mac OS 10.5 , which means 10+ year old hardware that is showing its age.

Interestingly, for many years Apple made it relatively easy for us to update our code gradually after each system update. However, that stopped soon after  the iPhone was introduced in 2007.  We tried the usual update process with Snow Leopard in 2009, but it required such a huge code rewrite that we never finished it.  I would say that Apple’s neglect for the Macintosh has only accelerated since then.

Meanwhile, on the Windows side we are still slogging through setup details for fields and tables. It has been slow to get up to speed on the Windows programming, but the onset of gloomy weather will help with that.

Dennis Kolva
Programming Director