Rather small table. You can see a pattern and it is rather obvious (see below)
Entries without plus or minus are neutral natures

hex dez english german + - ATT DEF INIT SpA SpD
00 00 Hardy Robust
01 01 Lonely Solo ATT DEF + -
02 02 Brave Mutig ATT INIT + -
03 03 Adamant Hart ATT SpA + -
04 04 Naughty Frech ATT SpD + -
05 05 Bold Kühn DEF ATT - +
06 06 Docile Sanft
07 07 Relaxed Locker DEF INIT + -
08 08 Impish Pfiffig DEF SpA + -
09 09 Lax Lasch DEF SpD + -
0A 10 Timid Scheu INIT ATT - +
0B 11 Hasty Hastig INIT DEF - +
0C 12 Serious Ernst
0D 13 Jolly Froh INIT SpA + -
0E 14 Naive Naiv INIT SpD + -
0F 15 Modest Mäßig SpA ATT - +
10 16 Mild Mild SpA DEF - +
11 17 Quiet Ruhig SpA INIT - +
12 18 Bashful Zaghaft
13 19 Rash Hitzig SpA SpD + -
14 20 Calm Still SpD ATT - +
15 21 Gentle Zart SpD DEF - +
16 22 Sassy Forsch SpD INIT - +
17 23 Careful Sacht SpD SpA - +
18 24 Quirky Kauzig

VB-Code. Index is given as decimal. Every sixth index is neutral (mkmod returns index MOD 6). The others are "counted" similar to a system with base 5

			Function index2natplus(index As Integer) As String
			    Dim plus As String
			    plus = "###FEHLER###"
			    If mkmod(index, 6) = 0 Then
				plus = "-0"
			    Else
				Select Case index
				    Case 0 To 4
					plus = "ATT"
				    Case 5 To 9
					plus = "DEF"
				    Case 10 To 14
					plus = "INIT"
				    Case 15 To 19
					plus = "SpA"
				    Case 20 To 24
					plus = "SpD"
				End Select
			    End If
			    index2natplus = plus
			End Function
			
			Function index2natminus(index As Integer) As String
			    Dim minus As String
			    minus = "###FEHLER###"
			    If mkmod(index, 6) = 0 Then
				minus = "+0"
			    Else
				Select Case mkmod(index, 5)
				    Case Is = 0
					minus = "ATT"
				    Case Is = 1
					minus = "DEF"
				    Case Is = 2
					minus = "INIT"
				    Case Is = 3
					minus = "SpA"
				    Case Is = 4
					minus = "SpD"
				End Select
			    End If
			    index2natminus = minus
			End Function