I mean whatever you get back from another class (either ASOC or ObjC) has to be coerced to an AS-formatted variable. Everything passes through Cocoa, and except for certain things like dates, you only need to coerce strings, texts, reals, integers and lists. When Ric’s ObjC method will return you the results of it’s process, you will have to coerce each item in the array to something AS will understand. For example:
repeat with anItem in returnArrayFromObjC
set anItem to anItem as string --or integer, or real, etc. depending on what is returned
--process anItem
end
This is mandatory, most of the time you will not get an error message and it won’t work or sometimes crash. Same thing if you had a separate class in ASOC, since Cocoa does the “transmission” of data between classes and languages.
You app is a bit difficult to read. If I can make a suggestion, here’s how you could simplify the first part. It could apply somewhere else:
set DataClientYear to theYear's titleOfSelectedItem() as integer
set TallyName2 to ((path to desktop) & "Mail Manager Folder:Mail Data " & DataClientYear) as text
set {TestClientDate, EndClientDate} to {current date, current date}
set {year of TestClientDate, month of TestClientDate, day of TestClientDate} to {DataClientYear, (startingMonth's indexOfSelectedItem()) + 1, 1}
set {hours of TestClientDate, minutes of TestClientDate, seconds of TestClientDate} to {0, 0, 0}
set {year of EndClientDate, month of EndClientDate, day of EndClientDate} to {DataClientYear, (endingMonth's indexOfSelectedItem()) + 1, 1}
set {hours of EndClientDate, minutes of EndClientDate, seconds of EndClientDate} to {0, 0, 0}
set {HourlyString, tempStartingMonth, tempendingmonth} to {{}, (month of TestClientDate) as integer, (month of EndClientDate) as integer
set {theClientListTEMP, theClientList2} to {{}, {}}
Also, for the sake of performance, when you tell an application to do something, only ask it to do what it is best at, like here:
tell application "Finder"
set theFiles to files of folder TallyName2 as alias list
set xx to 0
set TheBarIncrement to 100 / (count of theFiles)
end tell
should be changed to:
tell application "Finder" to set theFiles to files of folder TallyName2 as alias list
set {xx, TheBarIncrement} to {0, 100 / (count of theFiles)}
You shouldn’t ask the Finder to set variables, or do math. Your app can and should.
And a small simplification:
tell application "Finder"
set theCreationDate to name of individualFile
end tell
can be used like this:
tell application "Finder" to set theCreationDate to name of individualFile
One line instead of 3. 
I just saw this near the end:
set tempstring to " "
set tempNum to item x of temp1
if tempNum > 9 then set tempstring to " "
if tempNum > 99 then set tempstring to " "
if tempNum > 999 then set tempstring to " "
Why do you set tempstring to " " first then after 3 if…then set the same variable to the exact same value? Is it on purpose or is it a leftover? I’m not sure, but it takes up cpu cycles for nothing.
Hope this helps! 