class NepaliCalendar extends AbstractCalendar {

    @Override
    public DateTimeUnit plusDays( DateTimeUnit dateTimeUnit, int days )
    {
        if ( days < 0 )
        {
            return minusDays( dateTimeUnit, Math.abs( days ) );
        }
        
        int curYear = dateTimeUnit.getYear();
        int curMonth = dateTimeUnit.getMonth();
        int curDay = dateTimeUnit.getDay();
        int dayOfWeek = dateTimeUnit.getDayOfWeek();

        while ( days != 0 )
        {
            // days in month
            int dm = CONVERSION_MAP.get( curYear )[curMonth];

            curDay++;

            if ( curDay > dm )
            {
                curMonth++;
                curDay = 1;
            }

            if ( curMonth > 12 )
            {
                curYear++;
                curMonth = 1;
            }

            dayOfWeek++;

            if ( dayOfWeek > 7 )
            {
                dayOfWeek = 1;
            }

            days--;
        }

        return new DateTimeUnit( curYear, curMonth, curDay, dayOfWeek );
    }

}