/* @tier medium @module au @transform authorization-util */
/*
 * au_cu_0004.c - 승인한도 공통 유틸리티 (plain C)  [tier=medium]
 */
#include "au_cu_0004.h"

#include <string.h>

/* 수수료: 12개월 균등분할 잔액에 대한 단리 이자 합 */
long au_cu_0004_fee(long amount, int rate_bp)
{
    long total = 0, principal;
    int m;
    if (amount <= 0 || rate_bp < 0)
        return 0;
    principal = amount / 12;
    for (m = 1; m <= 12; m++) {
        long bal = amount - principal * (m - 1);
        total += bal * (long)rate_bp / 120000L;
    }
    return total;
}

/* 잔돈 재분배 반올림: 잔여의 2배가 unit 이상이면 올림 */
long au_cu_0004_round_unit(long amount, long unit)
{
    long base, rem;
    if (unit <= 0)
        return amount;
    base = (amount / unit) * unit;
    rem = amount - base;
    return (rem * 2 >= unit) ? base + unit : base;
}

/* 분류: 최상위(선두) 숫자 1~9 */
int au_cu_0004_classify(long amount)
{
    long v = amount < 0 ? -amount : amount;
    if (v == 0)
        return 0;
    while (v >= 10)
        v /= 10;
    return (int)v;
}
