The New York State Identification and Intelligence System Phonetic Code, commonly known as NYSIIS, is a phonetic algorithm devised in 1970 as part of the New York State Identification and Intelligence System (now a part of the New York State Division of Criminal Justice Services). It features an accuracy increase of 2.7% over the traditional Soundex algorithm.

Procedure
The algorithm, as described in Name Search Techniques, is:

If the first letters of the name are
'MAC' then change these letters to 'MCC'
'KN'  then change these letters to 'NN'
'K'   then change this letter to 'C'
'PH'  then change these letters to 'FF'
'PF'  then change these letters to 'FF'
'SCH' then change these letters to 'SSS'
If the last letters of the name are
'EE' then change these letters to 'Y␢'
'IE' then change these letters to 'Y␢'
'DT' or 'RT' or 'RD' or 'NT' or 'ND' then change these letters to 'D␢'
The first character of the NYSIIS code is the first character of the name.
In the following rules, a scan is performed on the characters of the name. This is described in terms of a program loop. A pointer is used to point to the current position under consideration in the name. Step 4 is to set this pointer to point to the second character of the  name.
Considering the position of the pointer, only one of the following statements can be executed.
If blank then go to rule 7.
If the current position is a vowel (AEIOU) then if equal to 'EV' then change to 'AF' otherwise change current position to 'A'.
If the current position is the letter
'Q' then change the letter to 'G'
'Z' then change the letter to 'S'
'M' then change the letter to 'N'
If the current position is the letter 'K' then if the next letter is 'N' then replace the current position by 'N' otherwise replace the current position by 'C'
If the current position points to the letter string 
'SCH' then replace the string with 'SSS'
'PH' then replace the string with 'FF'
If the current position is the letter 'H' and either the preceding or following letter is not a vowel (AEIOU) then replace the current position with the preceding letter.
If the current position is the letter 'W' and the preceding letter is a vowel then replace the current position with the preceding position.
If none of these rules applies, then retain the current position letter value.
If the current position letter is equal to the last letter placed in the code then set the pointer to point to the next letter and go to step 5.The next character of the NYSIIS code is the current position letter.Increment the pointer to point at the next letter.Go to step 5.
 If the last character of the NYSIIS code is the letter 'S' then remove it.
 If the last two characters of the NYSIIS code are the letters 'AY' then replace them with the single character 'Y'.
 If the last character of the NYSIIS code is the letter 'A' then remove this letter.

References

External links
 USDA report with both the original NYSIIS procedure and a modified version
 NIST Dictionary of Algorithms and Data Structures entry, including pointers to several implementations
 Sample coder, using a variant of the algorithm
 Ruby Implementation
 C# Implementation
 PHP Implementation

Phonetic algorithms