@@ -308,10 +308,12 @@ func (addenda98 *Addenda98) ParseCorrectedData() *CorrectedData {
308308 if v := first (17 , data ); v != "" {
309309 return & CorrectedData {AccountNumber : v }
310310 }
311+
311312 case "C02" : // Incorrect Routing Number
312313 if v := first (9 , data ); v != "" {
313314 return & CorrectedData {RoutingNumber : v }
314315 }
316+
315317 case "C03" : // Incorrect Routing Number and Incorrect DFI Account Number
316318 parts := strings .Fields (data )
317319 if len (parts ) == 2 {
@@ -320,24 +322,40 @@ func (addenda98 *Addenda98) ParseCorrectedData() *CorrectedData {
320322 AccountNumber : parts [1 ],
321323 }
322324 }
325+
323326 case "C04" : // Incorrect Individual Name
324327 if v := first (22 , data ); v != "" {
325328 return & CorrectedData {Name : v }
326329 }
330+
327331 case "C05" : // Incorrect Transaction Code
328332 if n , err := strconv .Atoi (first (2 , data )); err == nil {
329333 return & CorrectedData {TransactionCode : n }
330334 }
335+
331336 case "C06" : // Incorrect DFI Account Number and Incorrect Transaction Code
332- parts := strings .Fields (data )
333- if len (parts ) == 2 {
334- if n , err := strconv .Atoi (parts [1 ]); err == nil {
335- return & CorrectedData {
336- AccountNumber : parts [0 ],
337- TransactionCode : n ,
337+ var out CorrectedData
338+ if utf8 .RuneCountInString (data ) > 17 {
339+ out .AccountNumber = first (17 , data )
340+
341+ n , err := strconv .Atoi (strings .TrimSpace (data [17 :]))
342+ if err == nil {
343+ out .TransactionCode = n
344+ return & out
345+ }
346+ } else {
347+ parts := strings .Fields (data )
348+ if len (parts ) == 2 {
349+ out .AccountNumber = parts [0 ]
350+
351+ if n , err := strconv .Atoi (parts [1 ]); err == nil {
352+ out .TransactionCode = n
353+ return & out
338354 }
339355 }
340356 }
357+ return nil
358+
341359 case "C07" : // Incorrect Routing Number, Incorrect DFI Account Number, and Incorrect Tranaction Code
342360 var cd CorrectedData
343361 if n := len (data ); n > 9 {
@@ -355,6 +373,7 @@ func (addenda98 *Addenda98) ParseCorrectedData() *CorrectedData {
355373 } else {
356374 return nil
357375 }
376+
358377 case "C09" : // Incorrect Individual Identification Number
359378 if v := first (22 , data ); v != "" {
360379 return & CorrectedData {Identification : v }
0 commit comments