Computer Program Prevents 116-Year-Old Woman From Getting Pension (theguardian.com) 216
Bruce66423 quotes a report from The Guardian: Born at the turn of the past century, Maria Felix is old enough to remember the Mexican Revolution -- but too old to get the bank card needed to collect her monthly 1,200 pesos ($63) welfare payment. Felix turns 117 in July, according to her birth certificate, which local authorities recognize as authentic. She went three months without state support for poor elderly Mexicans after she was turned away from a branch of Citibanamex in the city of Guadalajara for being too old, said Miguel Castro, development secretary for the state of Jalisco. Welfare beneficiaries now need individual bank accounts because of new transparency rules, Castro said. "They told me the limit was 110 years," Felix said with a smile in the plant-filled courtyard of her small house in Guadalajara. In an emailed statement, Citibanamex, a unit of Citigroup Inc, said Felix's age exceeded the "calibration limits" of its system and it was working to get her the bank card as soon as possible. It said it was adjusting its systems to avoid a repeat of the situation.
Poor design (Score:5, Funny)
The limit clearly should have been 256 from the beginning.
Re:Poor design (Score:4, Insightful)
Re:Poor design (Score:4, Funny)
No, children below age of 1 are not eligible for elderly welfare benefits.
Re: (Score:2)
Wouldn't that require an 8.005624549-bit integer type?
No. log2(116) + 1 (because first bit is 0/1, every other is 2^n where n>1 = 7.85798099513. Then, you floor the value because the 7 is the highest-order bit needed, and the remainder is made up as a subset (i.e. 1 doesn't require another bit to represent, can be represented in combination of lower bits). So 7 bits. So even using 8-bit bytes, signed or unsigned, her age would be fine..
Re: (Score:2)
(i.e. 1 doesn't require another bit
Should have read "less than 1 doesn't require another bit" but slashey ate my <
Re: (Score:2)
You can't store 256 in 7 bits.
Yes you can. Raw data values have no inherent interpretation, which is why there are different ways of coding binary values such as BCD and the Graycode. You can take the most significant bit and say that this particular bit, If set to True shall be interpreted as 4 times the original value, instead of 2 times the original value. Or you can say this field contains quantities between
128 and 256
Re: Poor design (Score:4, Funny)
Re: (Score:2)
Most people applying for bank accounts aren't zero years old. Seems reasonable.
Re: (Score:2)
Re: Poor design (Score:4, Interesting)
My hometown's bank had a promotional thing to open a savings account for your new baby. So a lot of infants had bank accounts.
Re: (Score:2)
But some are.
Re: (Score:2)
There are a lot more people below the age of one with bank accounts than over 117. All of my kids had ESAs [wikipedia.org] the month they were born.
Re: (Score:2)
There are a lot more people below the age of one with bank accounts than over 117.
People below the Age of 1 don't get Bankcards or control of their own bank accounts, however.
ESAs require a named "Responsible individual" who is at least 18 years of age, And a custodian..... The account does not really belong to the person; the account belongs to the ESA trust that is "For the benefit of X" person.
Because if no bankcard, and because they're administered by a custodian, these accounts wouldn't run int
the COMPUTER is your FRIEND, citizen grandma! (Score:2)
Apparently the new computer thinks I won't be missed.
Re: (Score:2)
Re: (Score:2)
It was a joke. A exaggerated consequence for a software bug. Also known as parody.
People are too damn sensitive or I ran into a cluster of Asperger's sufferers.
PS - if 100% of my jokes hit, I would be a professional comedian instead of a professional programmer.
Re: (Score:2)
Re: (Score:2)
180. That's as long as Adam was supposed to have lived according to the Bible. If you believe that sort of thing. I think the modern recorded limit is like 122.
Adam lived to 930 (Score:5, Funny)
Gen 5:5
Methuselah 969 Gen 5:25
What DO they teach them in Sunday School these days...
From the fiction section of the library (Score:2, Troll)
What DO they teach them in Sunday School these days...
Fiction. But nobody really reads or even really believes the bible anymore anyway. People just pick and choose the bits of it to follow that suit their particular sensibilities and pretend that only those bits are the "word of god". In fact most of them don't even read the bits they follow. Someone else reads those bits and that someone else tells them what they want them to mean. Must be nice to have a world view unencumbered by evidence or logic or responsibility...
Re: (Score:2)
Judas threw the money into the temple and left. Then he went away and hanged himself.... Jesus said, "Go thou, and do likewise."
Re: (Score:2)
That Adam and Eve were expelled from paradise because the pension system was clearly unsustainable.
Re: (Score:2)
Re: (Score:2)
Mathuselah was 969. But surely people didn't live seven times longer. Were earth years shorter? What would cause earth's orbit to slow, I wonder.
Re: (Score:2)
Re: (Score:2)
Not thinking it through, watch them set the limit to 118.
Computer Program? (Score:5, Funny)
Re: (Score:2)
Surely you meant "AI" or "deep neural net", not just a "computer program"? It is 2017.
I can't let you do that Dave!
Re: (Score:2)
it may be 2017, but I'll bet $10 that the machine denying her application is programmed in COBOL.
Re: (Score:2)
Nope, John Oliver still has a job in 2017.
Wrong! (Score:4, Insightful)
The computer program isn't preventing anything, it's a bank that wrote shitty software that is preventing it. Do not blame machines for doing exactly what you told them to do!
Re: (Score:2)
Except of a law or guideline (also written by people) was preventing her from getting money, you'd still say "Law prevents woman from getting her money."
Computer says No! (Score:2)
https://www.youtube.com/watch?... [youtube.com]
Re: (Score:2)
Actually it's worse than that. It's the bank manager (or CEO) that refuses to input false information with a note having the truth and a memo to their employees to fix it or be fired.
Computers are not perfect. The difference between a good manager and a MORON is the moron says "sorry, the computer won't let us do that", while the manager ignores the rules and takes personal responsibility to see that the customer gets serviced.
Re: (Score:2)
Actually, it probably was written by the bank. Banks have IT departments, and they often write their own custom software.
Re: (Score:2)
In my experience, banks write their own software
In my experience, they don't.
Re: (Score:2)
The reality, therefore, is both.
In my case - a bespoke system replaced by a (rather heavily tweaked) off-the-shelf suite (which was prettier, but slower - despite 10 times the hardware requirements...)
Re: (Score:2)
Depends on the size of the bank.
Productivity over a lifetime (Score:2)
So crunching some numbers. Hard math ahead, watch out: So one spends 2 decades in school. Works for 5 decades. Is on pension for 5 more decades. So one's productive for less than half of one's whole life, and during that time one must support oneself and another unproductive person (young or old).
Re: (Score:2)
Survivor bias strikes again.
Just because she did this, doesn't mean that's normal or expected.
Forget the computer program... (Score:2)
...I just want to know the magic being her old age.
Perhaps it's a brand of Tequila she drinks every day that keeps her in such high spirits.
Re: (Score:2)
She isn't 116 is the reason, just do a google image search for "oldest living person". She easily looks 10-20 years younger. Her birth certificate was most likely issued much later than her actual birth date. That is also why the genius world records organization requires more than just a local birth certificate. https://www.google.com/search?... [google.com]
Humble request (Score:5, Funny)
The bigger question (Score:2)
Re: (Score:2)
Actually the limit was 110 supposedly. It's probably stored as a base 10 decimal number. Maybe in BCD format. This being a stodgy financial database.
Re: (Score:2)
Banks are big users of AS/400. I'm thinking it has something to do with EBCDIC. Flight numbers are still 6 characters long because of some IBM limitation from the early 1960s.
Re: (Score:2)
In COBOL 110 is generally more-round than 128.
Re: (Score:2)
Just fix the problem (Score:2)
Go into the fucking vault and get the lady her pension money in cash. The bank can eat the loss, the problem is their fault, and at her age, she's earned it.
Re: (Score:2)
Yeah.... give her the cash assistance she was due PLUS 25% default interest for the bank's past failure in their obligation to settle up their debt promptly.
Not easy to fix - cheaper solution (Score:2)
There are likely many places in the system that only have 2 digits for the year of birth. There is likely no source code for all of them and even if there is the documentation and coding styles used make fixing this almost impossible. You can't just lengthen the field as the code expect things to be at specific offsets. (there is li
Re: (Score:2)
I doubt very highly it's a 'two digit year' storage issue.
More likely, it's perfectly correct and reasonable boundary checking; an age should never be less than 0, and never more than, what? How many people are actually older than 110? She is an extreme outlier, and proof positive that the boundary checking is working.
Re: (Score:2)
So, what happens when someone wakes up from a 130 year cryo sleep, and their age is now 160?
Guardian? (Score:2)
Other side (Score:2)
I wonder how many times the code correctly shut off payments to people who were really dead. 110 is the wrong upper limit, but I don't know that the idea of an upper limit is bad. If the limit were 140, would we feel sufficiently confident to disallow payment?
Re:So what's the issue? (Score:5, Interesting)
There are two issues. First, apparently no programmer on the job was smart enough to consider people over 100 years old. Second, the bank could have just created a temporary account for her claiming she was born in 1901 with a note attached to fixed the date once the system had been patched. Sending her away rather than just fudging the birth date was a pretty foolish thing to do.
Re: (Score:2)
Re: (Score:3)
First, apparently no programmer on the job was smart enough to consider people over 100 years old.
Erm RTFS maximum age was set at 110 years. And how do we know this arbitrary limit wasn't defined in in the damned BR's
Re: (Score:3)
Re: So what's the issue? (Score:2)
Hold on... why would there be no need to change a birthdate? It is highly possible that some data entry mistake could happen and you would need to amend a mistake. For example you could have an employee or customer who is used to MMDDYY using a system that is DDMMYY and need to fix that.
Re: (Score:2)
First, apparently no programmer on the job was smart enough to consider people over 100 years old.
Programmers don't generally throw in arbitrary rules like that (I'm sure everyone has an anecdote though). I'd say it's more likely they were given a specific business rule that prevented people over 100 from claiming pension cheques to reduce a fraud vector. Perhaps this use case was supposed to coincide with a business process to otherwise make payments available to actual centenarians, but that got lost somewhere along the project.
Re: (Score:2)
Accidental rules (Score:5, Insightful)
Programmers don't generally throw in arbitrary rules like that...
Like hell they don't. They do it all the time unintentionally and sometimes very much intentionally. The entire Y2K problem was from tens of thousands of programmers arbitrarily taking short cuts in their programming creating arbitrary rules in regards to what seemed like corner cases at the time. Happens all the time, especially when the programmers don't fully understand the problem they are being asked to solve. The software we use to run our company is positively riddled with arbitrary restrictions which interfere with the efficient conduct of our business. The guys who programmed it are smart enough and decent folks but they don't actually use the software themselves so they don't really understand the limitations they are creating along the way.
I'd say it's more likely they were given a specific business rule that prevented people over 100 from claiming pension cheques to reduce a fraud vector.
Highly unlikely. Laziness and/or incompetence are far more likely origins of this problem.
I'm curious, how old are you? (Score:2)
The entire Y2K problem was from tens of thousands of programmers arbitrarily taking short cuts in their programming
I suspect you're relatively young as there were valid reasons [wikipedia.org] to only store 2 digits for the year.
Re: (Score:2)
Yeah, the parent is young and the reasoning on this is very naive... at the time there were many many reason to store dates that way. also computing was so new that no one anticipated it being an issue... until it was....
Re: (Score:2)
the bank could have just created a temporary account for her claiming she was born in 1901
Then they would have told her that 15-year-olds were not eligible.
Re: (Score:2)
The problem is programming to a spec instead of programming to what is needed. This isn't likely a programming issue, but that they were told "accept ages up to 110" by someone writing the spec.
Re: (Score:2)
Why would someone who is not a programmer set up such an arbitrary limit?
That kind of unnatural shortcoming typically comes from a constraint in the tools used to build the software, that the lazy programmer doesn't know or care how to work around. It wouldn't make any sense to include it deliberately on the requirements.
Re: (Score:3)
Probably because it's not arbitrary; most people don't live to be 110, and everybody knows you're supposed to perform sanity checking. According to a quick google search (the height of scholarly rigor,) there's maybe 300 people in the world who are older than 110 years. The most wild estimate is 600.
On the other hand, fraud is a real thing, not to mention straight up human error; somebody dies, they don't get taken out of the system
Sanity checks (Score:2)
Probably because it's not arbitrary; most people don't live to be 110, and everybody knows you're supposed to perform sanity checking. According to a quick google search (the height of scholarly rigor,) there's maybe 300 people in the world who are older than 110 years. The most wild estimate is 600.
Ok so then why was that sanity check not performed? It seems obvious that the system should be able to handle ages that people have actually reached even if only on occasion. 130 would have covered it at least for the time being and the programmers could have figured that out with about 60 seconds research on google.
On the other hand, fraud is a real thing, not to mention straight up human error; somebody dies, they don't get taken out of the system, so the money keeps going out.
Not a valid excuse to deny someone service who has done nothing wrong. Plenty of other and better ways to deal with the fraud problem.
Re: (Score:2)
A quick google search shows that there are, by the most wild estimate, 600 people on the planet, at most, who are over the age of 110. More like 150 to 300.
Raising the age to 130 just means there's an extra 20 years of potential pension fraud or incorrect payments.
No excuse (Score:2)
A quick google search shows that there are, by the most wild estimate, 600 people on the planet, at most, who are over the age of 110. More like 150 to 300.
Yes we know that people who are very old are rare. Rare does not equal nonexistent. At least in the US denying someone service on account of age is a civil rights violation. The fact that it is a rare problem does not excuse them from failing to deal with the problem properly.
Raising the age to 130 just means there's an extra 20 years of potential pension fraud or incorrect payments.
That is not and should never be the problem of the customer. The bank can suck it up and deal with the problem in other ways. Go visit the customer if they are that worried about it. Old people often need help anyway.
Re: (Score:2)
I wouldn't say it is a lack of intelligence, but the challenge of defining acceptable ranges for data validation, without causing too many edge cases. The opposite is no validation and questionable data values.
Re: (Score:2)
If they were smarter they'd be making COBOL jokes, where stopping at 110 even becomes the right sort of round number if you describe the data field in an awful enough way... maybe I'll check for that on slashdot
Re:So what's the issue? (Score:5, Insightful)
Re: (Score:3)
Re:So what's the issue? (Score:4, Interesting)
How about someone in the bank just puts here age in like 10 years younger than she is, what's the big deal if their system thinks he is 106 instead of 116?
Well, the bank is usually allowed to issue IDs that many people who don't have a driver's license and don't want to carry their passport use. Intentionally falsifying records like that is not something I'd do without explicit approval from my boss in writing, because a note is unlikely to prevent such false documents from being issued. And that would probably escalate all the way to legal, who might have to check whatever agreements they have with the government, who will then probably say no. It's just not worth my own skin to be customer friendly.
Re:So what's the issue? (Score:5, Insightful)
There is no way to take every edge case into account when designing systems. She is clearly an edge case. Why is this even here?
Because when you think “this will work for 99% of cases” the corollary is “the rest of 1% can go fudge themselves”. Sometimes that is fine, but if a person can't get their pension, that is certainly not ok. Consider this a cautionary tale for programmers.
Re: (Score:3)
Because validation rules like this are actually pretty important when it comes to detecting and preventing fraud. The failure here was not that the software could not deal with here being more than 110.
That is sufficiently an edge case that as frequently as it comes up a call form a bank manager to HQ where they can say something like well enter the date a 1/1/1900 than and we will have an engineer update the record to the correct value ASAP should work.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Because when you think “this will work for 99% of cases” the corollary is “the rest of 1% can go fudge themselves”. Sometimes that is fine, but if a person can't get their pension, that is certainly not ok. Consider this a cautionary tale for programmers.
Why blame the programmers? For all we know this was in the business requirements
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Yes, why set a limit at 110?
Fraud prevention? I've seen several stories over the years of people collecting pension cheques issued to dead relatives. The odds of people trying to collect pension cheques for a dead relative is probably orders of magnitude higher compared to the odds of someone over the age of 110 being a member of that bank and collecting an actual pension cheque.
This page [wikipedia.org] suggests there is one other person in Mexico over the age of 110 (I'm sure there's a few more unlisted), so the odds of this happening were some
Re: (Score:3)
The old testament is not a valid historical document. Also, it takes quite a bit of motivated reasoning to think that we are anywhere near pushing maximum human lifespans to 1000 or even 200. Not going to happen. Everyone reading this now will be dead and gone in no less than 115 years. Get over it. To return to the topic, though, the limit should be realistic for purposes of fraud detection. You wouldn't want families going on collecting great-great-grandma's pension long after she is dead. As others have
Re: (Score:2)
Re: (Score:2, Insightful)
Someone is new!
This mentality frustrates me to no end. While it may be possible that a single line of code change, or hell even just a minor tweak to a DB field property can be made, this is a freaking Financial application!!!
No change can be made in an hour and actually deployed. There is testing and procedures that must be adhered to in order to maintain a level of quality and stability. If you say, yeah but this is isolated, then why have quality procedures in place to begin with? Sure if this was some
Re: (Score:2)
...this is a freaking Financial application!!!
No change can be made in an hour and actually deployed.
Reminds me of a funny story. I was hanging out in a Ruby programming channel on IRC, and somebody comes in and lurks for 5 minutes and then sends me a PM asking if I'm available for contracting. I turns out he wanted to pay $25 for less than 1 hour of work writing a Perl script for use by a South African bank interchange. Why he was in a Ruby channel for that I don't know. The script just glued two network protocols together with some header boilerplate.
It was so hilarious that I said yes. Amazingly, he pai
Re: (Score:2)
It's a Bank
They wouldn’t even lift a finger to save their own grandmothers from the Ravenous Bugblatter Beast of Traal without orders signed in triplicate, sent in, sent back, queried, lost, found, subjected to public inquiry, lost again, and finally buried in soft peat for three months and recycled as firelighters.
Douglas Adams
Good to see signs of reading on Slashdot (Score:2)
There is hope...
Re: (Score:2)
duh, welcome to computers
we have data in our databases that says 1900 or 2049 or some other data we'll think we will never use because we need data in the column and it can't be blank
computers are nothing more than trying to tell the biggest retart how to follow directions. very specific directions
Re: (Score:2)
Mexico (Read the summary at least) (Score:2, Informative)
This is in Mexico, it has nothing to do with America. (Though I wouldn't put it past any programmers here to miss the same edge case.)
Re: (Score:2)
Though I wouldn't put it past any programmers here to miss the same edge case.
Wouldn't put it past the wall builders to accidentally enclose Mexico, rather than just separate it from the US...
Re: (Score:2)
Because the bean counters won't let us have an infinite amount of memory to run them on like a proper Turing machine.
Re: (Score:2)
Infinite memory is Not required to avoid making the assumptions. You can allocate from heap space just fine.
Unbounded memory requirement does Not mean infinite memory requirement. It just means you have to add more memory as demands on the application cause the application's memory demand to dynamically expand.
Re: (Score:2)
0mg is lighter than I would have expected.
Re: (Score:2)
Re: (Score:2)
RIght, unsigned char is not good enough for banking. The data type for age is probably PIC 9(3) and the limitation is based on data validation code, not data type limitations.