Logo   Form 990 Schedule A Public Support Calculator

Home

Log In...

Dragonnorth...

Resources

Contents

Using PSCALC
Using F990CALC
Releases

Public Support Calculator

This program is used to calculate the public support information required on an IRS form 990 Schedule A. There are two versions of this Form 990 calculator PSCALC is a pure command line version with no graphical input. F990CALC is a Windows GUI front end for the same calculation engine. F990CALC can be used from the command line with the same set of commands.

The command line program reports the results by printing them to the console or to an output file. The Windows program reports results to a window which can then be saved. In general errors are reported to multiple places. For command line use errors go both to the console and to the output file (if one is specified). For Windows use errors go to an error window and to the output window. Errors associated with an input file can be clicked to bring up that file and the line with the error.

Using PSCALC or F990CALC

Funding Sources

The IRS talks about money that comes in to a 501(c)3 organization as comming from different types of "Funding Sources". Some funding sources are individuals who donate money. Others are income from events, money earned from sales, money from grants etc. To be done correctly the analysis of public support on Form 990 Schedule A needs to know the nature of where money comes from. This is done by associating each revenue item with a funding source. Splitting funding sources by individual names in general does not matter except for money that comes from people who have special roles in the organization (DIRECTORs OFFICERs, TRUSTEEs etc.). Those people should be individually identified to get a correct answer.

Input File Format

The file is a tab seperated list of two or three fields. Extra space characters at the beginning or end of a field are usually ignored. This file can be created in Excel and exported to a tab seperated file and will be correct. (Only the first three columns of the spreadsheet will be noticed by the program and must be the Name, Date and Amount respectively.) Comma seperated files can not be used. Commas can not be used as the seperator because commas can be presented as part of an amount ($1,000.00).

There are two types of lines in the input file. The first type are lines that associate a funding source with a keword. The second type of line describes a particular amount recieved. Remember that fields on either type of line are seperated by the tab character.

Lines which associate a funding source with a purpose have two fields: The name of the funding source in the first field and the keyword that describes the purpose of the funding source in the second. The keywords are not case sensitive. These keywords also describe some special roles that certain people (who might donate funds) have (i.e. DIRECTOR or TRUSTEE). When putting these associations in a spreadsheet use the first column for the name and the second for the keyword. Leave the third column blank.

Lines which show an amount recieved have three fields: The name of the funding source in the first field, the date in the second field and then the dollar amount in the third field. Neither the name nor the date is case sensitive.

The input looks like this:

    ! NameDateAmount
 !or Keyword 
 Bill SmithOFFICER 
 Bill Smith31-Dec-21150.00
 Ticket SalesADMISSIONS 
 Ticket Sales4-Feb-22990.00

Comments

Comments are lines that start with an exclamation point '!'. These lines are ignored. Blank lines are also ignored.

Name Field

The name field is the first field on every line. The name (donor or funding source) is ended by a TAB character. It is not case sensitive. Bill Smith is the name on the third and fourth lines in the above example. Ticket Sales is the name on the fifth and sixth line.

Date or Keyword Field

The second field is used for a date or a keyword. It is not case sensitive and is terminated with a tab. These keywords are associated with IRS understood meanings. When one of the keywords in the list below is supplied any third field on the line is ignored and a third field need not be present. A name can not be associated with more than one keyword. An error is reported if a second keyword is specified for any name. OFFICER is the keyword on the third line in the above example.

The following keywords are recognized:
KeywordPurpose
DONOR If This keyword is associated with a name it describes a simple donor who made a contribution. Names which have never been associated with a keyword are assigned to this revenue category.
CHARITY All revenue from a source associated with this name is from another charitable institution. This keyword should also be used for revenue from Donor Advised Fund where the donors do not select charities by name (not typical).
DAF All revenue from a source associated with this name is from a charitable institution that distributes Donor Advised Funds to charities where the donor designates the destination charity by name. (This is typically how Donor Advised Funds work.) These donations are special because although they are from a charity they are still subject to the 2 percent limit per donor in the calculation of public support contribution. The calculation of the 2 percent limit will be incorrect if the aggregate group such as "Fidelity Charitable" exceeds the limit. In this case different donor advisors to that group must be treated as different unique donors such as "Fidelity Charitable Pope" and "Fidelity Charitable Newman". When the DAF group exceeds the 2 percent limit warnings are emitted and the source data must be updated to use a unique DAF name for each advisor to handle this case properly. Those unique names should be associated with the DAFDONOR name because amounts over 2 percent designated by a single donor are properly handled and a warning is not needed.
DAFDONOR This is the same as DAF but represents donations advised by exactly one donor. When donations from this single donor exceed the 2 percent limit they are properly handled and do not issue a warning. Donations from these donors are subject to the 2 percent limit and as long as each donor is given a unique name the amount over 2 percent is not considered public support and is properly handled.
GOVERNMENT All revenue from a source associated with this name is from a govenment agency.
DIRECTOR The donor name associated with this keyword is a director of the organization
OFFICER This donor name associated with this keyword is an officer of the organization.
TRUSTEE This donor name associated with this keyword is a trustee of the organization.
FAMILY This donor name associated with this keyword is a family member of a Director, Officer or Trustee.
TAX The name associated with this keyword is for taxes that were collected and distributed to the organization (this is unusual).
FREE_USE The name associated with this keyword is a special source. It describes the value of the free use of a government resource. No cash is exchanged.
UNRELATED Revenue from names associated with this keyword is "Unrelated business taxable income (less section 511 taxes) from businesses acquired after June 30, 1975" (Part III section B line 10b).
OLD_BUSINESS Revenue from names associated with this keyword is "Net income from unrelated business activities not included in line 10b, whether or not the business is regularly carried on" (Part III section B line 11).
NOT_UNRELATED Revenue from names associate with this keyword is from business activity related to the charitable purpose. "Gross receipts from activities that are not an unrelated trade or business under section 513" (Part III line 3).
OTHER Revenue from names associated with this keyword is from "Other income. Do not include gain or loss from the sale of capital assets (Explain in Part VI.)" (Part III line 12).
ADMISSIONS Revenue from names associated with this keyword is from "Gross receipts from admissions, merchandise sold or services performed, or facilities furnished in any activity that is related to the organization's tax-exempt purpose" (part III line 2).
NOTE: Revenue of this type which came from a disqualified person (Director, Officer or Trustee), is not supposed to be included in some fields and calculations. That distinction is not made by the program and there is presently no way to represent money that came from a disqualified person that was anything other than a donation. If a disqualified person bought a ticket to an event that purchase should be excluded from the admissions total and is neither noticed nor excluded properly.
REVENUE This is another name for ADMISSIONS, it will be summarized seperately, but for tax purposes it is the same as ADMISSIONS and gets added to the same lines on the form.
SALES This is also another name for ADMISSIONS, it will be summarized seperately, but for tax purposes it is the same as ADMISSIONS and gets added to the same lines on the form.
INVESTMENT Revenue from names associated with this keyword is "Gross income from interest, dividends, payments received on securities loans, rents, royalties, and income from similar sources" (Part II line 8 and Part III line 10a).
NOTE: All investment amounts presented to the program are included in the calculations. A distinction is supposed to be made between capital gains vs income earned on investments. Capital gains should not be included as a source of revenue on Form 990. Here the program makes the assumption that capital gains are not listed in the investment income presented to the program. It is probably necessary to create another source for Capital Gains that then gets summarized and excluded properly. For now the program expects Capital Gains to simply not be in the list. For Form 990 Schedule A Capital Gains do not participate in any of the calculations.

Dates in the second field can be input in any of several formats:

31-Dec-21
31-Dec-2021
31-December-21
31-December-2021
31 Dec 21
31 dec 21
31 Dec 2021
31 December 21
31 December 2021
12/31/21
all mean the same thing: December 31st, 2021 is also the date on the fourth line of the example file.

Amount Field

The third field is the amount of money from the named source on this date. It can be supplied with or without the dollar sign. Supplying the decimal point and cents after the decimal is optional. Spaces in the amount field, commas and any dollar sign(s) are ignored. Quotation marks in the amount field are also ignored. (Excel sometimes outputs an amount surrounded by quotation marks). If a donor gives two seperate donations on the same date that is OK and seperate lines can be used for each. (NOTE: There is no difference in the answers if these two donations are combined on a single line with the total of the two donations.)

The amount field is terminated by the end of line or by a TAB character. Fields after this are ignored. $150.00 is the donation amount Bill Smith gave on the fourth line of the example above.

Software Licensing

501(c)(3) organizations are herby granted license to download and use this software for calculating their own form 990 Schedule A results. Others (such as accounting firms) should contact mnewman@dragonnorth.com for licensing terms.

Downloading the Program

The PSCALC (command line only) program can be downloaded from: the Latest Built PSCALC Image This ZIP file contains a file called pscalc.exe which is expected to run in a Command Prompt window on an MS Windows PC.

The Windows GUI version of the program can be downloaded from: the Latest Built F990CALC Image This ZIP file contains a file called f990calc.exe which is a Windows GUI application and a set of DLL libraries necessary to run the application. Extract all of these files from the zip file into a directory. NOTE: This version is still experimental, comments welcome.)

Running the Windows GUI F990CALC Program

Documentation for running the F990CALC Graphical Input Windows program is not complete. A discussion of the menu items presented graphically and how to use them is missing.

Double click on the executible 'f990calc.exe' to start the Windows GUI version of the program. Other normal methods of starting a Windows application can be used such as putting a link in the menu or a shortcut on the desktop. Perhaps some day an installation script will be created that creates the menu entry and/or shortcut automatically as well as placing the DLL libraries in a location that will allow them to be shared with other applications.

The Windows F990CALC program can also be run from the command line. The same arguments as the PSCALC version are used. If run from the command line the GUI is not started and the program should work the same way the Command Line PSCALC version does.

NOTE: The Windows GUI program requires libraries that are part of wxWidgets. It will not run unless those libraries are available. The libraries should now be included in the built image of the ZIP distribution. Please report if the program starts and reports a missing library.

Running the Program from the Command Line

Example command strings (all are equivalent)
c:/mydir> pscalc.exe -v=1 -o=resultsfile.txt donationsfile.txt
c:/mydir> f990calc.exe -v=1 -o=resultsfile.txt donationsfile.txt
c:/mydir> f990calc.exe /v=1 /o=resultsfile.txt donationsfile.txt
 
Command Line Options
-hEmit a help message
<filename> Read the input file: filename which contains a list of donors, roles and/or donation amounts. This option can be repeated to read several files. The PSCALC version of the program allows input files to be placed anywhere on the command line. The W990CALC program follows the command line standards used in Windows and Unix and only allows input files at the end of the command line. Normal usage is to put the input files after the output file name, this will ensure that any errors reading the inputs are recorded in the output file.
-o=<filename>Write the output to the file: filename. If this option is given more than once the output file is changed each time. Using this option multiple times is not typical or expected, but will not produce errors. Each file will be created, most will be empty. If this option is not selected output will be to the console.
-r=#Use year # as the final year for the 990
-v-Minimum printouts, but includes all information required to fill out Form 990 Schedule A.
-vIncrease the output verbosity.
-v=1Emit more printouts explaining the results. Includes all outputs in '-v'.
-v=2Emit enough printouts to recreate the answers manually. Includes all printouts in '-v1'.
-v=3Emit printouts useful in testing to see if the code is calculating correct answers. Includes all printouts in '-v2'.
-v=4Emit printouts useful in debugging the program. Includes all printouts in '-v3'.

Known Problems

There is no method to differentiate Investment Income from Investment Capital gains. Capital gains are excluded from Form 990 Schedule A and should not be included in any input data.

Funding sources ADMISSION and NOT_UNRELATED are supposed to exclude any payments from 'Disqualified Persons' which the IRS defines as Directors, Officers, Trustees and Family members. The program has no way to detect revenue in these categories that was paid by Disqualified Persons. Any such revenue should not be presented to the program. Most ticket type revenue would be very hard to determine if it came from a Disqualified Person. This might be best controlled by prohibiting such people from paying for this type of item.

Further Documentation

A place for documentation that has not been created yet.

Ideas for more documentation
Example input file
Example output file

PSCALC Releases

PSCALC is a simple command line C++ program built from source. The Borland 5.0 compiler and asociated make was used but any C++ compiler is likely to work. The GCC compiler has also been verified to work, it was also used for the F990CALC build which was build with wxWidgets-3.1.5. Regression tests show the same results with either of these compilers.

RevisionSizeZIP file
FTP
Changes
NextRelease The download files for the next release do not exist yet. As changes are made comments are accumulated here so items are not forgotten.

No changes yet.

20231102 80Kb Log in to see a link to the sources.

This is version 2(4)-11 in the GUI build and 2(4)-5 in the command line build. This version has better handling of the 2 percent limit for donor advised funds. There can still be errors in the 2 percent calculation if a general fund such as Fidelity Charitable contributes more than the limit but no individual advisor to that fund exceeded the limit. In this case the program currently makes the conservative assumption that all contributions from ths fund were from a single advisor. Warnings are produced if such a fund exceded the limit. The input data can be adjusted to create unique names such as "Fidelity Charitable Pope" and "Fidelity Charitable Newman" for funding of this type. They both are treated as Donor advised funds but the 2 percent limit will be applied to them as two different contributors.

Add Usage command to GUI.

Rework arguments to use -x=# style so GUI and command line versions match.

Rework PSCALC to take file names without -i. Deprecate -i.

Rework documentation on the server.

20220225 80Kb Log in to see a link to the sources.

This is version 1(4)-6. This version does not have any special handling for Donor Advised Funds. It turns out that contributions from Donor Advised Funds need special handling because they are subject to the 2 percent limits in the public support tests much as donations from individuals are. This is not handled properly in this version. If large donations come from Donor Advised funds the 2 percent limitations will not be calculated properly in this and earlier versions.

Add Usage command to GUI.

Rework arguments to use -x=# style so GUI and command line versions match.

Rework PSCALC to take file names without -i. Deprecate -i.

Rework documentation on the server.

20220220 80Kb Log in to see a link to the sources.

Connect Problems panel to error occurance. Log error to file line information to facilitate this.

Calculate and pass around position as well as line number for file reading errors.

A variety of tweaks to error and message output that change formatting of the start of each line.

Update version processing to use the messages system.

More pervase use of the messages system.

Update help messages.

Update Two Percent limit calculation.

Fix bugs and differences when input lines end with EOL vs NUL.

Centralize Event ID declarations.

Change to calculate result in a window and expect the user to save it.

Add popup error reports for incorrect user actions such as calculating with not data read.

Discover that clicks in the error panel do not register unless it is editable when event.Skip() is not called.

20220128 80Kb Log in to see a link to the sources.

Split into many modules to facilitate changing to a windows GUI. Isolate the user interface from the processing. Update regression tests. Probably fixed some bugs but the source comparision to see what changed is impractical for this release.

20220113 80Kb Log in to see a link to the sources.

Add -r to let the user specify the most recent 990 year.

Report percent of all years for officers.

Handle Quotation marks in the name field, not allowed in the date/keyword field, already handled in the amount field..

Print some progress messages.

Add the concept of warnings. Produce the initial text of errors and warnings centrally with line number indications.

Rework normalization of date strings and computation of date from the string. Eliminate the use of strptime which the GCC compiler does not have. Add GCC compilation batch files and regression checks. Eventually move to that compiler, but MAKE handling is not yet moved.

Rework use of percentToString, some weird results occured on GCC. Now as uses only do one %s output per printf call.

Better reporting of names with leading and trailing quotes.

Avoid use of float in the reading of values, rounding errors occured.

More careful checks for headers and lines that are not in the expected name tab date tab amount format.

20220108 80Kb Log in to see a link to the sources.

Start to talk about sources of funding instead of donors.

Handle more date formats. Fix some bugs in handling of dates with - characters.

Report totals by sources of funding.

Add a report if donations are smaller than $50K in the first 3 years.

Sepreate computation of totals from printing reports and summary data.

Report issues if the organization is less than 6, not less than 5.

Handle seperators better. Provide for quoted names.

Report file and line number on more errors.

20220107 80Kb Log in to see a link to the sources.

Rework many presentations. Correct errors in calculation of public support. Complete the printing of part III. Update the web page documentation. Add keyword concept for many more cateories to now support all lines of Part II and Part III.

20220105 80Kb Log in to see a link to the sources.

First release.

                                                                                                                                                       
PScalc Work Log for Michael Newman. Send comments and corrections to:
Webmaster: mnewman@dragonnorth.com