+func check_vals(accnt map[string]amap,aid string,oaid string,ta *Transaction) bool {
+ qa, _ := strconv.Atoi(get_val(ta,aid))
+ qb, _ := strconv.Atoi(get_val(ta,oaid))
+
+ var val, cmp int
+
+
+ switch {
+ case accnt[aid].tax:
+ // aid = taxval * oaid / 100
+ val = int((qb*accnt[aid].taxval)/100.0)
+ cmp = qa
+ default:
+ // oaid = taxval * aid / 100
+ val = int((qa*accnt[aid].taxval)/100.0)
+ cmp = qb
+ }
+
+ if cmp >= val-1 && cmp <= val+1 {
+ return true
+ } else {
+ fmt.Println("E:",qa,qb,"<- ",accnt[aid].taxval,"->",cmp,val)
+ return false
+ }
+}
+
+func get_val(ta *Transaction,aid string) string {
+ for sc := range ta.Spl {
+ if ta.Spl[sc].AccountId == aid {
+ return strings.TrimSuffix(ta.Spl[sc].Value,"/100")
+ }
+ }
+ return ""
+}
+
+func round(v float64) int {
+ if v < 0.0 {
+ v -= 0.5
+ } else {
+ v += 0.5
+ }
+ return int(v)
+}