class NepaliCalendar extends AbstractCalendar {

    @Override
    public DateTimeUnit toIso( DateTimeUnit dateTimeUnit )
    {
        if ( dateTimeUnit.isIso8601() )
        {
            return dateTimeUnit;
        }

        DateTime dateTime = START_ISO.toJodaDateTime();

        int totalDays = 0;
        
        for ( int year = START_NEPAL.getYear(); year < dateTimeUnit.getYear(); year++ )
        {
            totalDays += getYearTotal( year );
        }

        for ( int month = START_NEPAL.getMonth(); month < dateTimeUnit.getMonth(); month++ )
        {
            totalDays += CONVERSION_MAP.get( dateTimeUnit.getYear() )[month];
        }

        totalDays += dateTimeUnit.getDay() - START_NEPAL.getDay();

        dateTime = dateTime.plusDays( totalDays );

        return new DateTimeUnit( DateTimeUnit.fromJodaDateTime( dateTime ), true );
    }

}